📌 まずは問題を見ろ
→ javadrill.tech で出題された問題を見る(Step02)
問題のポイント
Map
をループで出力する2つの方法:keySet()
vsentrySet()
- 両者の構文・動き・向き不向きを比較する
- どちらを使っても、同じ出力になるか確認しろ
まず、日本語で考えろ
- 社員番号と部署名の対応表がある
- それを 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.
道具を使い分けろ。構造を見極めろ。おまえのコードに、迷いを刻むな。