java如何对HashMap根据值排序?
时间: 2023-05-26 10:07:21 浏览: 123
Java中的HashMap本身是无序的,不支持根据值排序。但是可以考虑将HashMap的key-value反转,得到一个新的TreeMap,然后按照值进行排序。具体做法如下:
1. 将HashMap的key-value反转,创建一个新的TreeMap,其中key为原来HashMap中的value,value为原来HashMap中的key。代码如下:
```
HashMap<K, V> hashmap = new HashMap<>();
// 初始化hashmap
TreeMap<V, K> treemap = new TreeMap<>();
for (Map.Entry<K, V> entry : hashmap.entrySet()) {
treemap.put(entry.getValue(), entry.getKey());
}
```
2. 使用Java中的Comparator对TreeMap按照value进行排序。代码如下:
```
List<Map.Entry<V, K>> list = new ArrayList<>(treemap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<V, K>>() {
public int compare(Map.Entry<V, K> o1, Map.Entry<V, K> o2) {
return o1.getKey().compareTo(o2.getKey());
}
});
// 遍历排序后的结果
for (Map.Entry<V, K> entry : list) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
```
以上代码可以实现HashMap根据值排序,其中的Comparator可以根据实际情况进行定制。
阅读全文