針對 Map<Integer, String> 演示三種遍歷寫法。
public static void show1(Map<Integer, String> map) {
for (Integer key : map.keySet()) {
String value = map.get(key); // 二次查找
System.out.println(key + "=" + value);
}
}
優點:語義清晰。缺點:每次循環額外 get,性能稍遜。
public static void show2(Map<Integer, String> map) {
for (Map.Entry<Integer, String> entry : map.entrySet()) {
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key + "::" + value);
}
}
優點:直接獲取鍵值對,無額外查找,性能最佳;Entry 即「結婚證」綁定關係。
public static void showValue(Map<Integer, String> map) {
for (String v : map.values()) System.out.println(v);
}
適用:業務邏輯完全不關心 Key,只處理 Value 集合。
public class MapDemo {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(8, "zhaoliu"); map.put(9, "zhaoliu"); map.put(1, "xiaoqiang");
map.put(6, "wangcai"); map.put(7, "zhaoliu"); map.put(99, "zhaoliu");
map.put(87, "xiaoqiang"); map.put(42, "wangcai");
show1(map);
System.out.println("---");
show2(map);
System.out.println("---");
showValue(map);
}
// 三個 show 方法同上
}

map.forEach((k,v) -> ...) 簡化代碼,底層仍走 entrySet。