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

Map 遍歷兩大姿勢與 Key/Value 排序實戰

     編輯:Java 綜合教學

Map 遍歷兩大姿勢與 Key/Value 排序實戰

一、 初始化示例 Map

Map<String, String> map = new HashMap<>();
map.put("1", "hell");
map.put("2", "hello");
map.put("3", "hel");
map.put("4", "hello");

二、 方式一:keySet + get(通用但兩次查找)

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

三、 方式二:entrySet(推薦,單次查找、大容量更優)

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

四、 HashMap 遍歷順序不穩定 → 需排序

將 entrySet 轉為 List,配合 Comparator 排序:

List<Map.Entry<String, String>> list = new ArrayList<>(map.entrySet());

// 1. 按 Key 排序
list.sort(Comparator.comparing(Map.Entry::getKey));

// 2. 按 Value 排序
list.sort(Comparator.comparing(Map.Entry::getValue));

// 輸出
for (Map.Entry<String, String> e : list) {
    System.out.println(e.getKey() + "=" + e.getValue());
}

五、 Java 7 兼容寫法(匿名 Comparator)

Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
    @Override public int compare(Entry<String, String> m, Entry<String, String> n) {
        return m.getKey().compareTo(n.getKey()); // 或 getValue()
    }
});

最佳實踐:日常遍歷首選 entrySet;需排序時轉 List + Comparator.comparing(Java 8+)或 Collections.sort(Java 7)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved