Map<String, String> map = new HashMap<>();
map.put("username", "qq");
map.put("passWord", "123");
map.put("userID", "1");
map.put("email", "qq@qq.com");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " ---> " + entry.getValue());
}
優點:語法簡潔,同時獲取鍵值,性能最佳。
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println(entry.getKey() + " == " + entry.getValue());
}
適用:需要在遍歷時移除元素(調用 it.remove())。
for (String key : map.keySet()) {
System.out.println(key + " -- " + map.get(key));
}
缺點:需額外查找 value,性能較差;僅需鍵時使用。
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
System.out.println(key + " ===== " + map.get(key));
}
同方式三,不推薦用於大量數據。
| 方式 | 性能 | 可讀性 | 可移除元素 | 推薦場景 |
|---|---|---|---|---|
| for-each entrySet | ★★★★★ | ★★★★★ | 否 | 常規遍歷 |
| Iterator entrySet | ★★★★☆ | ★★★★☆ | 是 | 遍歷中刪除 |
| for-each keySet | ★★★☆☆ | ★★★★☆ | 否 | 僅需鍵 |
| Iterator keySet | ★★★☆☆ | ★★★☆☆ | 是 | 遍歷中刪除鍵 |
map.forEach((k, v) -> System.out.println(k + " = " + v)); // 或並行處理 map.entrySet().parallelStream().forEach(e -> System.out.println(e.getKey() + " = " + e.getValue()));
日常開發首選 for-each 遍歷 entrySet,兼顧性能與可讀性;需刪除時用 Iterator;Java 8 提供更函數式的選擇。