📜  在 java 8 中按键排序 hashmap - Java (1)

📅  最后修改于: 2023-12-03 15:23:09.654000             🧑  作者: Mango

在 Java 8 中按键排序 HashMap

在 Java 8 中,开发人员可以使用 HashMap 对象来存储一些键值对数据。但是,如果要遍历 HashMap 中的键值对,并将它们按特定顺序排序,该怎么办呢?本文将介绍如何在 Java 8 中按键排序 HashMap

使用 HashMap 对象

首先,我们需要了解如何使用 HashMap 对象。以下是一些基本操作:

创建 HashMap
HashMap<String, Integer> map = new HashMap<>();
在 HashMap 中添加键值对
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
获取 HashMap 中的值
int a = map.get("a"); // a = 1
int b = map.get("b"); // b = 2
int c = map.get("c"); // c = 3
遍历 HashMap
for (String key : map.keySet()) {
    int value = map.get(key);
    System.out.println(key + " = " + value);
}

上述代码会遍历 HashMap 中的键值对,并输出它们的值。

按键排序 HashMap

要按键排序 HashMap,我们需要使用 TreeMapTreeMap 是一种有序的、基于红黑树实现的 Map,它可以根据键按升序排序。

以下是如何使用 TreeMapHashMap 中的键进行排序的代码:

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 的代码示例:

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}
结论

使用 TreeMapCollections.sort 可以轻松对 HashMap 进行排序。无论是按键还是按值排序,都可以使用这两种方法实现。