MapUtil.java
import java.util.HashMap;
import java.util.Map;
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");
// ---- keySet() を使ったループ ----
System.out.println("=== keySet() を使った出力 ===");
for (Integer empId : departmentMap.keySet()) {
// key(社員番号)から value(部署名)を取得する
String department = departmentMap.get(empId);
System.out.println(empId + " → " + department);
}
// ---- entrySet() を使ったループ ----
System.out.println("=== entrySet() を使った出力 ===");
for (Map.Entry<Integer, String> entry : departmentMap.entrySet()) {
// entry から key と value を同時に取り出す
Integer empId = entry.getKey();
String department = entry.getValue();
System.out.println(empId + " → " + department);
}
}
}
解説:Mapをループで出力する2つの方法
JavaのMapをループで出力するには、主に以下の2通りの方法があります。
方法①:keySet()
を使う
for (Integer key : map.keySet()) {
String value = map.get(key);
System.out.println(key + " → " + value);
}
keySet()
はすべてのキーを取得できる- キーから値を取得するために
map.get(key)
を毎回呼び出す必要がある - 単純だが、Mapが大きくなるとパフォーマンス面でやや不利
方法②:entrySet()
を使う
for (Map.Entry<Integer, String> entry : map.entrySet()) {
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " → " + value);
}
entrySet()
はキーと値のペア(Entry)を一括で扱えるgetKey()
とgetValue()
を使ってそれぞれ取得- Mapの中身をすべて処理する場面では推奨される方法
実行結果の例(順不同):
=== keySet() を使った出力 ===
2001 → Sales
2002 → HR
2003 → Engineering
=== entrySet() を使った出力 ===
2001 → Sales
2002 → HR
2003 → Engineering
※ HashMap は順序を保証しないため、出力順は実行環境により異なる可能性があります。
まとめ:このステップで学ぶべきこと
Map
をループ処理する際の2通りの方法を体得するkeySet()
は構造がシンプル、entrySet()
は効率的- 実用上は
entrySet()
が推奨されるシーンが多い