HashMap: キーと値
キーで値を検索。O(1) で高速。
Map
キーと値のペア。
Entry
キーと値の組。
ハッシュ
キーからインデックスを計算。
HashMap
import java.util.HashMap;import java.util.Map;
// HashMap の作成Map<String, Integer> ages = new HashMap<>();
// 要素の追加ages.put("Alice", 30);ages.put("Bob", 25);ages.put("Carol", 35);
// 要素の取得int aliceAge = ages.get("Alice"); // 30Integer unknown = ages.get("Dave"); // null
// 存在チェックif (ages.containsKey("Bob")) { System.out.println("Bob exists");}
// デフォルト値int age = ages.getOrDefault("Dave", 0); // 0
// 削除ages.remove("Bob");実行結果
30\nBob exists\n0
Bad
// ❌ Bad: null チェックなしint age = ages.get("unknown");// NullPointerException!Good
// ✅ Good: getOrDefault 使用int age = ages.getOrDefault("unknown", 0);// または containsKey でチェックパターン
// ループfor (Map.Entry<String, Integer> entry : ages.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue());}
// forEach + ラムダages.forEach((name, age) -> { System.out.println(name + " is " + age);});
// 便利メソッドMap.of("a", 1, "b", 2); // 不変マップ作成Map.copyOf(mutableMap); // 不変コピー
// computeIfAbsent: 存在しなければ計算して追加Map<String, List<String>> groups = new HashMap<>();groups.computeIfAbsent("team1", k -> new ArrayList<>()).add("Alice");
// merge: 値をマージages.merge("Alice", 1, Integer::sum); // 30 + 1 = 31 Tip: getOrDefault で null を避ける。
合格ライン
getOrDefault を使える
forEach でループできる
参考リンク
演習課題
課題1: HashMap操作
put, get, containsKey を使ってユーザーデータを管理してください。
課題2: entrySet
entrySet() でマップをループしてください。