Map修羅道:Step01

0003_Map修羅道-step01 learn

📌 まずは問題を見ろ

→ javadrill.tech で出題された問題を見る(Step01)


問題のポイント

  • Map.put()同じキーに値を2回登録したら、どうなる?
  • Map.entrySet() を使って、キーと値のペアを1つずつ取り出して出力できるか?
  • System.out.println(map) で出力するな。ループ処理で中身を明示的に出力する練習。

まず、日本語で考えろ

  • 会員番号と名前をセットで登録する。
  • 同じ番号が2回出てくる(101 → “Yamada” と “Suzuki”)。
  • 最終的に Map には、どの名前が残る?

コメントを書け

// Mapを作成する(キー: 会員番号、値: 名前)
// 3件のデータをputする(うち1つはキー重複)
// entrySet()を使って、Mapの中身を1件ずつ出力する

コメントに従ってコードを書け

import java.util.*;

public class MapUtil {
    public static void printMemberMap() {
        // Mapを作成する(キー: 会員番号、値: 名前)
        Map<Integer, String> memberMap = new HashMap<>();

        // 3件のデータをputする(うち1つはキー重複)
        memberMap.put(101, "Yamada");
        memberMap.put(102, "Tanaka");
        memberMap.put(101, "Suzuki"); // 同じキーで上書き

        // entrySet()を使って、Mapの中身を1件ずつ出力する
        for (Map.Entry<Integer, String> entry : memberMap.entrySet()) {
            System.out.println(entry.getKey() + " → " + entry.getValue());
        }
    }
}

実行結果の例(順不同)

101 → Suzuki
102 → Tanaka

コードの解説

  • Map<Integer, String> を使って、キーに会員番号(int)、値に名前(String)を登録。
  • memberMap.put(101, "Suzuki") によって、先に登録された "Yamada"上書きされて消える
  • entrySet() を使うことで、キーと値のペアを同時に取り出してループできる
  • System.out.println(map) のような一括出力ではなく、構造を明示的に扱う書き方を身につけることが今回の目的。

つまづきやすいポイント

  • 同じキーで put() したとき、前の値は完全に上書きされる。Map は「1つのキーに対して1つの値」しか持てない。
  • entrySet()Map.Entry 型の集合であり、キーと値を一緒に扱えるループ構文が使える。
  • keySet() + get() の組み合わせでも出力できるが、entrySet() のほうが効率的でコードも読みやすい

teshのひとこと

「Mapに同じキーを入れたらどうなる?」
そんなの知ってる? いや、“書いて”“出して”“見て”実感するまでがJavaや。

print(map) じゃ見えへん構造を、自分の手で取り出せ。
構造が見えたとき、Mapはもう怖くない。
Just keep typing, baby.
隠れた上書きを見抜け。構造は、出力して初めておまえの目に宿る。


👉 Map修羅道:全体のステップ構成はこちら