日常開發中,Map<String, String> 遍歷是高頻操作。本文對比四種主流寫法的性能與適用場景。
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// 业务逻辑
}
map.get(key) 開銷;Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
String key = entry.getKey();
String value = entry.getValue();
// it.remove(); // 安全刪除
}
for (String key : map.keySet()) {
String value = map.get(key); // 額外 hash 查找
}
get(),大數據量下明顯慢 10%-20%;map.forEach((key, value) -> {
// Lambda 表達式,代碼極簡
});
| 寫法 | 平均耗時 (ms) |
|---|---|
| entrySet + for | 12 |
| Iterator | 13 |
| forEach | 14 |
| keySet + get | 28 |