HashMap: キーと値

キーで値を検索。O(1) で高速。

Map
キーと値のペア。
Entry
キーと値の組。
ハッシュ
キーからインデックスを計算。
Phone Book

HashMapは「電話帳」です。 **キー** = 名前(検索語) **値** = 電話番号 名前で検索すれば、一発で番号が見つかる。 順番に探す必要なし(O(1))。

HashMap

HashMap Basics
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"); // 30
Integer 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 でチェック

パターン

Iteration, computeIfAbsent
// ループ
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() でマップをループしてください。

次のステップ