📅  最后修改于: 2023-12-03 15:23:09.654000             🧑  作者: Mango
在 Java 8 中,开发人员可以使用 HashMap
对象来存储一些键值对数据。但是,如果要遍历 HashMap
中的键值对,并将它们按特定顺序排序,该怎么办呢?本文将介绍如何在 Java 8 中按键排序 HashMap
。
首先,我们需要了解如何使用 HashMap
对象。以下是一些基本操作:
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
int a = map.get("a"); // a = 1
int b = map.get("b"); // b = 2
int c = map.get("c"); // c = 3
for (String key : map.keySet()) {
int value = map.get(key);
System.out.println(key + " = " + value);
}
上述代码会遍历 HashMap
中的键值对,并输出它们的值。
要按键排序 HashMap
,我们需要使用 TreeMap
。TreeMap
是一种有序的、基于红黑树实现的 Map,它可以根据键按升序排序。
以下是如何使用 TreeMap
对 HashMap
中的键进行排序的代码:
HashMap<String, Integer> map = new HashMap<>();
map.put("b", 2);
map.put("a", 1);
map.put("c", 3);
TreeMap<String, Integer> sortedMap = new TreeMap<>(map);
System.out.println(sortedMap);
上述代码将输出按键排序后的键值对列表:
{a=1, b=2, c=3}
如果要按值排序 HashMap
,则需要先将键值对列表转换为可排序的列表,然后根据值进行排序。以下是如何按值排序 HashMap
的代码示例:
HashMap<String, Integer> map = new HashMap<>();
map.put("b", 2);
map.put("a", 1);
map.put("c", 3);
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
HashMap<String, Integer> sortedMap = new LinkedHashMap<>();
for (Map.Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
System.out.println(sortedMap);
上述代码将输出按值排序后的键值对列表:
{a=1, b=2, c=3}
使用 TreeMap
和 Collections.sort
可以轻松对 HashMap
进行排序。无论是按键还是按值排序,都可以使用这两种方法实现。