java.util.Map<K,V>はKey-Value形式とも呼ばれ、一意なKeyとそれに紐づく値(Value)のペアを要素として扱うクラスです。
この記事ではMapの種類と使い方について解説していきます。
Mapの種類
次の3種類あります。
MAPの種類 | 説明 |
---|---|
HashMap | Keyからハッシュ値を算出して値を管理するMap。順序は保証されない。 TreeMapやLinkedHashMapよりも高速に動作する。 |
TreeMap | 指定されたComparatorに従って順序付けされるMap。 |
LinkedHashMap | デフォルトでは格納された順番を保持するMap。 コンストラクタの第3引数にtrueを設定するとアクセス順で要素を保持できる。 |
Mapの生成
次のような書き方ができます。
Java
//HashMapの生成
HashMap<String, Integer> hMap = new HashMap<String, Integer>();
//TreeMapの生成
TreeMap<String, Integer> tMap = new TreeMap<String, Integer>();
//LinkedHashMapの生成
LinkedHashMap<String, Integer> lMap = new LinkedHashMap<String, Integer>();
//型推論により、右辺のデータ型を省略することが可能です。
Map<Integer, String> map2 = new HashMap<>();
主要なメソッド
よく使うメソッドを挙げてみます。
メソッド | 使い方 |
---|---|
Map.put(key, value); | マップを追加する。 |
Map.get(key) | マップを取得する。 |
Map.remove(key) | マップを削除する。 |
Map.clear() | マップの要素を全て削除する。 |
Map.containsKey(key) | 指定したKeyが存在する場合はTrue、存在しない場合はfalseを返す。 |
Map.size() | マップの長さを取得する。 |
Map.entrySet() | KeyとValueをセットで取得する。 |
Map.keySet() | Keyのみを取得する。 |
Map.values() | Valueのみを取得する。 |
Map.put(key, value)の使い方
第1引数にKey、第2引数にValueを指定します。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
Map.get(key)の使い方
Keyを指定すると、Keyに対応するValueを返します。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
System.out.println(map.get("3"));//MicroSoft
keyが重複している場合は最後に格納された方が適用されます。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
map.put("3", "IBM");
System.out.println(map.get("3"));//IBM
Map.remove(key)の使い方
Keyを指定すると、そのKeyとValueの対応が削除されます。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
map.remove("3");
System.out.println(map.get("3"));//null
Map.claer()の使い方
clearメソッドを実行すると、そのオブジェクトが保持しているすべてのKeyとValueの対応が削除されます。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
map.clear();
System.out.println(map);//{}
System.out.println(map.size());//0
Map.containsKey(key)の使い方
指定したKeyが存在すればTrueを返し、存在しなければFalseを返します。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
System.out.println(map.containsKey("3"));//true
System.out.println(map.containsKey("4"));//false
Map.size()の使い方
そのオブジェクトにKeyとValeuの対応がいくつ登録されているかを返します。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
System.out.println(map.size());//3
ただし、keyが重複している分はカウントされません。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
map.put("3", "IBM");
System.out.println(map.size());//3
Mapのループ処理(Map.entrySet()の使い方)
MapのKey項目とValue項目を繰り返し取得する処理です。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
for(Map.Entry<String, String> map2 : map.entrySet()) {
System.out.println(map2.getKey() + " : " + map2.getValue());
}
実行結果は以下のとおりです。
Java
//1 : Apple
//2 : Amazon
//3 : MicroSoft
Mapのループ処理(Map.keySet()の使い方)
MapのKey項目を繰り返し取得する処理です。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
for(String map2 : map.keySet()) {
System.out.println(map2);
}
実行結果は以下のとおりです。
Java
1
2
3
Mapのループ処理(Map.Values()の使い方)
MapのValue項目を繰り返し取得する処理です。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
for(String map2 : map.values()) {
System.out.println(map2);
}
Java
Apple
Amazon
MicroSoft
ラムダ式でループ処理を行う
MapインターフェースにはdefaultメソッドとしてforEach
メソッドが定義されています。
下記のとおり定義されているため、これを使用するには引数が2つ必要になります。
Java
default void forEach (BiConsumer<? superK ,? super V> action)
下記が実装してみた例です。
Java
Map<String, String> map = new HashMap<>();
map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");
map.forEach((key,value) -> System.out.print(key + value));//1Apple2Amazon3MicroSoft
これを実行すると3つの要素のKeyとValueが連結されて1Apple2Amazon3MicroSoft
と表示されます。

以上で記事の解説はお終い!
もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!