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

Map 集合三種遍歷方式對比:keySet、entrySet 與 values 迭代器用法示例

     編輯:Java 綜合教學

Map 遍歷三大模式代碼示例與性能分析

針對 Map<Integer, String> 演示三種遍歷寫法。

1. keySet 迭代(需兩次查找)

public static void show1(Map<Integer, String> map) {
    for (Integer key : map.keySet()) {
        String value = map.get(key); // 二次查找
        System.out.println(key + "=" + value);
    }
}

優點:語義清晰。缺點:每次循環額外 get,性能稍遜。

2. entrySet 迭代(推薦,單次查找)

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 即「結婚證」綁定關係。

3. values 迭代(僅需值)

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 方法同上
}

運行輸出

keySet輸出 entrySet輸出 values輸出

總結建議

  • 需要 Key 和 Value:優先使用 entrySet。
  • 僅需 Key:keySet。
  • 僅需 Value:values。
  • JDK8+ 可用 map.forEach((k,v) -> ...) 簡化代碼,底層仍走 entrySet。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved