【8/27まで】Udemyの人気コースが今なら1,200円から!!

【Java入門】Mapの種類と使い方(HashMap/TreeMap/LinkedHashMap)

【Java入門】Mapの種類と使い方

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と表示されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です