MapUtil.java
import java.util.*;
public class MapUtil {
public static void testRemoveAndReplace() {
// 会員番号と名前を管理するMapを作成
Map<Integer, String> memberMap = new HashMap<>();
// データを登録
memberMap.put(1, "Yamada");
memberMap.put(2, "Tanaka");
memberMap.put(3, "Suzuki");
// 登録後の出力
System.out.println("=== 初期状態 ===");
printMap(memberMap);
// 会員番号2をremove
memberMap.remove(2);
// 削除後の出力
System.out.println("=== remove後 ===");
printMap(memberMap);
// 会員番号3の名前をKatoにreplace
memberMap.replace(3, "Kato");
// 更新後の出力
System.out.println("=== replace後 ===");
printMap(memberMap);
}
// Mapの内容を出力するヘルパーメソッド
private static void printMap(Map<Integer, String> map) {
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " → " + entry.getValue());
}
}
}
解説:remove() と replace() はまったく違う
Mapでデータを操作するとき、「値を消す」と「値を更新する」は別の操作です。
このステップではその違いを明確に体験します。
- Mapに次のデータを登録
- 1 → “Yamada”
- 2 → “Tanaka”
- 3 → “Suzuki”
remove(2)
を実行すると、「キー2」とその値がMapから完全に消えます。replace(3, "Kato")
を実行すると、「キー3」の値が “Suzuki” から “Kato” に上書きされます。
出力結果(例)
=== 初期状態 ===
1 → Yamada
2 → Tanaka
3 → Suzuki
=== remove後 ===
1 → Yamada
3 → Suzuki
=== replace後 ===
1 → Yamada
3 → Kato
使い分けのポイント
- remove(key):キーと値のペアごと削除する
- replace(key, newValue):値だけを更新(キーは残る)
- 存在しないキーに対して replace をしても何も起きない
まとめ
Mapの操作には「削除」と「更新」があり、それぞれ明確に役割が違います。
データのライフサイクルを意識して使い分けましょう。
Just Keep Typing, Baby!では、この「Map修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!
// tesh:
// 正解だけじゃ、理解にはならん。こっちが本番。