对一个hashMap排序
时间: 2023-11-26 20:04:40 浏览: 78
HashMap 是无序的,但是可以根据其键(key)或值(value)进行排序。以下是两种排序方法:
1.根据 key 排序:可以将 HashMap 中的键值对放入到一个 List 中,然后使用 Collections.sort() 方法对 List 进行排序,最后再将排序后的 List 转换回 HashMap。示例代码如下:
```java
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
map.put("banana", 3);
map.put("orange", 2);
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.getKey().compareTo(o2.getKey());
}
});
HashMap<String, Integer> sortedMap = new LinkedHashMap<>();
for (Map.Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
System.out.println(sortedMap); // 输出 {apple=5, banana=3, orange=2}
```
2.根据 value 排序:可以使用与上述相同的方法,只需将比较 key 的代码改为比较 value 即可。示例代码如下:
```java
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
map.put("banana", 3);
map.put("orange", 2);
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); // 输出 {orange=2, banana=3, apple=5}
```
阅读全文