こんにちは、新米ブログの新米です。
今回はHashMapの使い方についてサンプルコードを題材にして、紹介したいと思います。
HashMapを覚えよう!
■HashMap(連想配列)とは
・キーでデータを扱うものです。
HashMapは配列とよく並んで使われます。HashMapは配列の機能と似ており、キーでデータを扱う事が特徴です。またHashMapは連想配列とも言われます。
先ほど話した通りHashMapは配列と機能が似ていますが、ではどこが違うのでしょうか?詳しくHashMapについて見ていきましょう!
配列とHashMap(連想配列)の違い
配列はデータ構造の一種でデータをまとめて管理します。配列は添え字(インデックス)という番号を指定する事でデータを取り出す事ができます。
1つの変数で同じ型の複数のデータをまとめて扱えます。
配列と同じでHashMapもデータをまとめて管理をします。しかし、HashMapでは添え字を使わないでデータを取り出すときはキーを使います。
例えば「brother」というHashMapを作成したとしましょう。この中に値を3つ用意しました。その場合、それぞれのキーでデータを参照したり変更したりできます。またこのキーは変数を使う事もできます。さらにデータの個数を簡単に確認する事もできます。それから、データの追加更新も簡単に行え削除も簡単に行えます。
■HashMapの具体的機能
・データ個数の確認
・データの追加・更新・削除
このように、まとまったデータを簡単に扱う事ができますね!では、HashMapの具体的な使い道はどのような時でしょうか?
HashMapはどのような時に使う?
学生 |
国語 |
数学 |
英語 |
一郎 |
90 |
50 |
80 |
次郎 |
80 |
55 |
70 |
三郎 |
25 |
35 |
100 |
HashMapの使い道は複数の項目があってそれをレコード別で使いたい場合などに使われます。
例えば、DB内に国語という項目名しかない場合は配列が適していますが、そこに数学、英語というように複数の科目があって、学生ごとにコードを取得したい場合はHashMapが適しています。
Hash Mapの書き方
■HasMapの宣言
キーまたはデータが整数値の場合はintではなく「Integer」なので注意!
■HashMapエントリー宣言
put()メソッドを使ってキーとデータの初期設定を行います。
データを取り出すためのキーとそれに対応するデータの事をエントリーと言います。
import java.util.HashMap; public class Main { public static void main(String[] args) { HashMap<String, String> brotherMap = new HashMap<String, String>(); //格納 brotherMap.put(“長男”, “一郎”); brotherMap.put(“次男”, “次郎”); brotherMap.put(“三男”, “三郎”); //キーのデータを出力 System.out.println(enemyMap.get(“次男”)); } }
指定したキーが存在しない場合
HashMapで設定したキーではない物を出力しようとした場合どうなるか見てみましょう。
[サンプルコード]import java.util.HashMap; public class Main { public static void main(String[] args) { HashMap<String, String> brotherMap = new HashMap<String, String>(); //格納 brotherMap.put(“長男”, “一郎”); brotherMap.put(“次男”, “次郎”); brotherMap.put(“三男”, “三郎”); String sister = “長女”; System.out.println(brotherMap.get(sister)); //brotherMapの要素数を出力 System.out.println(brotherMap.size()); } }
3
長女というキーはありませんので実行結果はnullが返ります。また、size()メソッドは、要素数を知る事ができます。
キーを指定し要素を削除する方法
■要素を削除するためにはremove()メソッドを使用します。
import java.util.HashMap; public class Main { public static void main(String[] args) { HashMap<String, String> brotherMap = new HashMap<String, String>(); brotherMap.put(“長男”, “一郎”); brotherMap.put(“次男”, “次郎”); brotherMap.put(“三男”, “三郎”); //次郎を削除 brotherMap.remove(“次男”); System.out.println(brotherMap.size()); } }
remove()メソッドで要素を削除したことにより、要素数が2になった事がわかります。
HashMapとループ処理
■HashMapでループ処理Entryを使用します。
■キーを取得します。
■データを取得します。
// HasuMapをループで処理 import java.util.HashMap; import java.util.Map.Entry; public class Main { public static void main(String[] args) { HashMap<String, String> brotherMap = new HashMap<String, String>(); brotherMap.put(“長男”, “一郎”); brotherMap.put(“次男”, “次郎”); brotherMap.put(“三男”, “三郎”); for(Entry<String, String> entry : brotherMap.entrySet()){ //キーを取得 System.out.print(entry.getKey() + ", "); //データを取得 System.out.println(entry.getValue()); } } }
次男,次郎
三男,三郎
このようにEntryをfor文に書くことによってHashMapのキー・データ、全てを取得する事もできます。
まとめ
いかがだったでしょうか。
連想配列と配列の区別をつけてそれぞれ適した場面で使う事を心がけていきましょう。
僕は現在新入社員として、IT企業で働いています。まだまだプログラミング知識は乏しいですが日々勉強に励んでいます。社内でプログラミングのできる方は参考書やWebサイトで学習した内容を実際にコードを書いてみることの繰り返しをしています。
僕も学んだことを実際に書いてみたり、こうしてブログ記事を書いて再復習しています。お互い上を目指して頑張りましょう!
\記事の更新時にはツイッターでツイートしますのでよければフォローお願いします!/
https://twitter.com/ShinMaiBlog/
コメント
[…] […]