MapUtil.java
import java.util.*;
public class MapUtil {
public static void testNullBehavior() {
// 会員IDと氏名を管理するMapを作成(HashMapはnullキー・null値を許容)
Map<Integer, String> memberMap = new HashMap<>();
// 通常のデータを登録
memberMap.put(1001, "Yamada");
// nullをキーとして登録(有効)
memberMap.put(null, "Tanaka");
// nullを値として登録(有効)
memberMap.put(1002, null);
// Mapの内容を出力
for (Map.Entry<Integer, String> entry : memberMap.entrySet()) {
Integer id = entry.getKey();
String name = entry.getValue();
System.out.println(id + " → " + name);
}
// nullキーで取得できるか確認
System.out.println("nullキーの値: " + memberMap.get(null));
// 値がnullのときの取得確認
System.out.println("ID 1002 の値: " + memberMap.get(1002));
}
}
解説:HashMapとnullの関係
JavaのHashMap
は、他のMap実装と比べて柔軟で、nullをキーや値に許容します。
nullキーについて
map.put(null, "Tanaka");
HashMap
は nullキーを1つだけ 登録できます- すでにnullキーがある状態で再度
put(null, ...)
すると、上書きされます TreeMap
などでは nullキーはNullPointerException
の原因になるので注意
null値について
map.put(1002, null);
null
は 値として何個でも登録可能- ただし、
null
値と「未登録」を区別するにはcontainsKey()
での存在確認が必要
map.containsKey(1002); // true(nullが登録されている)
map.get(1002); // null(値がnull)
map.containsKey(9999); // false(未登録)
出力結果の例(順不同)
1001 → Yamada
null → Tanaka
1002 → null
nullキーの値: Tanaka
ID 1002 の値: null
まとめ:このステップで学ぶべきこと
HashMap
はnullキーを1つ、null値を複数許可する- 値がnullなのか、未登録なのかは
containsKey()
で判別する - nullに関する仕様は Map実装ごとに違う ので要注意
Mapの柔軟さと落とし穴の両方を体験する重要なステップです。