首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Map 遍歷四種常用方法總結與程式碼範例

     編輯:Java 相關知識

前言

Map 是 Java 集合框架核心接口,遍歷方式主要分為基於鍵集合與基於鍵值對集合兩大類,各衍生出傳統迭代器與增強 for 循環兩種寫法,共四種常見模式。

準備工作:測試數據

Map<String, String> map = new HashMap<>();
map.put("1", "第一個");
map.put("2", "第二個");
map.put("3", "第三個");

方法一:keySet + Iterator(傳統)

Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
    String key = it.next();
    String value = map.get(key);
    System.out.println(key + "=" + value);
}

特點:需兩次查找(取鍵再取值),效率略低;可在遍歷中安全移除鍵(it.remove())。

方法二:entrySet + Iterator(傳統推薦)

Set<Map.Entry<String, String>> entrySet = map.entrySet();
Iterator<Map.Entry<String, String>> it = entrySet.iterator();
while (it.hasNext()) {
    Map.Entry<String, String> entry = it.next();
    System.out.println(entry.getKey() + "=" + entry.getValue());
}

特點:單次獲取鍵值對,無需額外 get(),性能最優;亦可安全移除。

方法三:keySet + 增強 for(簡潔)

for (String key : map.keySet()) {
    String value = map.get(key);
    System.out.println(key + "=" + value);
}

特點:語法簡潔,但同樣存在雙重查找開銷;不可在循環中修改 Map 結構,否則拋 ConcurrentModificationException。

方法四:entrySet + 增強 for(推薦日常使用)

for (Map.Entry<String, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + "=" + entry.getValue());
}

特點:兼具可讀性與性能,無額外查找;同樣禁止結構性修改。

Java 8+ 新選擇:forEach + Lambda

map.forEach((k, v) -> System.out.println(k + "=" + v));
// 或流式處理
map.entrySet().stream()
   .forEach(e -> System.out.println(e.getKey() + "=" + e.getValue()));

內部實現基於 entrySet 迭代器,語義更清晰,支持鏈式操作(過濾、轉換等)。

性能與適用場景對比

方法性能可讀性可修改結構推薦場景
keySet + Iterator中低是 (it.remove)需邊遍歷邊刪除鍵
entrySet + Iterator高中是 (it.remove)高性能且需刪除
keySet + for-each中高否僅讀遍歷、鍵值均需用
entrySet + for-each高高否日常唯讀遍歷首選
forEach + Lambda高最高否Java 8+、需函數式處理

總結

  • 唯讀遍歷:優先 entrySet + 增強 for 或 forEach。
  • 需刪除元素:必須使用 Iterator.remove(),推薦 entrySet 版本。
  • 僅需鍵:keySet 足矣。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved