Map修羅道:Step02

0003_Map修羅道-step02 learn

📌 まずは問題を見ろ

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


問題のポイント

  • Map をループで出力する2つの方法:keySet() vs entrySet()
  • 両者の構文・動き・向き不向きを比較する
  • どちらを使っても、同じ出力になるか確認しろ

まず、日本語で考えろ

  • 社員番号と部署名の対応表がある
  • それを 1件ずつループで出力したい
  • 書き方は2通りある。両方やって、違いを見ろ

コメントを書け

// Mapに社員番号と部署名を登録する
// keySet() を使って出力する
// entrySet() を使って出力する

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

import java.util.*;

public class MapUtil {
    public static void printDepartments() {
        // Mapに社員番号と部署名を登録する
        Map<Integer, String> departmentMap = new HashMap<>();
        departmentMap.put(2001, "Sales");
        departmentMap.put(2002, "HR");
        departmentMap.put(2003, "Engineering");

        System.out.println("▼ keySet() で出力");
        // keySet() を使って出力する
        for (Integer id : departmentMap.keySet()) {
            System.out.println(id + " → " + departmentMap.get(id));
        }

        System.out.println("▼ entrySet() で出力");
        // entrySet() を使って出力する
        for (Map.Entry<Integer, String> entry : departmentMap.entrySet()) {
            System.out.println(entry.getKey() + " → " + entry.getValue());
        }
    }
}

実行結果の例(順不同)

▼ keySet() で出力
2001 → Sales
2002 → HR
2003 → Engineering
▼ entrySet() で出力
2001 → Sales
2002 → HR
2003 → Engineering

コードの解説

  • Map<Integer, String> で、社員番号と部署名を登録。
  • keySet() は「キーの集合」。対応する値を出すには map.get(key) が必要。
  • entrySet() は「キーと値のセット(Entry)」を直接ループできる。
  • 結果は同じでも、書き方・使い道・効率が違う。今はそれを“体で覚える”。

つまづきやすいポイント

  • keySet() では「キー」しか取り出せない。値が欲しけりゃ get(key)
  • entrySet() なら最初から「キーと値のペア」が渡ってくる。
  • 処理が重くなったとき、entrySet() の方が無駄がない。書けるようにしておけ。

teshのひとこと

道具は一つじゃない。同じ結果を出すにも、書き方に構造が宿る。

おまえのJavaは、“出せればOK”で止まってへんか?
出力のしかたひとつで、理解の深さがバレるぞ。


Just keep typing, baby.
道具を使い分けろ。構造を見極めろ。おまえのコードに、迷いを刻むな。


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