102 「Map修羅道」 Step09 解答例

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でデータを操作するとき、「値を消す」と「値を更新する」は別の操作です。
このステップではその違いを明確に体験します。

  1. Mapに次のデータを登録
    • 1 → “Yamada”
    • 2 → “Tanaka”
    • 3 → “Suzuki”
  2. remove(2) を実行すると、「キー2」とその値がMapから完全に消えます。
  3. 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の操作には「削除」と「更新」があり、それぞれ明確に役割が違います。
データのライフサイクルを意識して使い分けましょう。


102 ステップアップ問題 「Map修羅道」


Just Keep Typing, Baby!では、この「Map修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!

// tesh:
// 正解だけじゃ、理解にはならん。こっちが本番。