頭脳一式

人の記憶なんて曖昧なもの。すべての情報を頭に記憶するなんてナンセンス。困ったらここに来ればいいじゃん?というスタンスで最強のナレッジベースを目指すブログ

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

Mapの種類

MAPの種類 説明
HashMap Keyからハッシュ値を算出して値を管理するMap。順序は保証されない。
TreeMapやLinkedHashMapよりも高速に動作する。
TreeMap Keyの昇順にソートされるMap。
LinkedHashMap デフォルトでは格納された順番を保持するMap。
コンストラクタの第3引数にtrueを設定するとアクセス順で要素を保持できる。

Mapの生成

//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を指定する。

Map<String, String> map = new HashMap<>();

map.put("1", "Apple");
map.put("2", "Amazon");
map.put("3", "MicroSoft");

Map.get(key)の使い方

Keyを指定すると、Keyに対応するValueを返却する。

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が重複している場合は最後に格納された方が適用される。

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とValueを削除する。

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()の使い方

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を返却する。

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()の使い方

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が重複している分はカウントされない。

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項目を繰り返し取得する処理。

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());
}
//【出力結果】
//1 : Apple
//2 : Amazon
//3 : MicroSoft

Mapのループ処理(Map.keySet()の使い方)

MapのKey項目を繰り返し取得する処理。

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);
}
//【出力結果】
//1
//2
//3

Mapのループ処理(Map.Values()の使い方)

MapのValue項目を繰り返し取得する処理。

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);
}
//【出力結果】
//Apple
//Amazon
//MicroSoft