java中map可以根据value给key排序吗
时间: 2024-05-14 21:14:29 浏览: 97
在Java中,Map本身是不支持按照value排序的。但是可以通过以下步骤实现:
1. 将Map中的entry转换成List。
2. 定义一个Comparator来比较entry的value。
3. 使用Collections.sort()方法对List进行排序。
4. 将排好序的List转换回Map。
下面是示例代码:
```
import java.util.*;
public class SortMapByValue {
public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
List<Map.Entry<K, V>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
return (o1.getValue()).compareTo(o2.getValue());
}
});
Map<K, V> result = new LinkedHashMap<>();
for (Map.Entry<K, V> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("apple", 4);
map.put("banana", 2);
map.put("pear", 3);
map.put("orange", 1);
Map<String, Integer> sortedMap = sortByValue(map);
System.out.println(sortedMap);
}
}
```
输出结果为:{orange=1, banana=2, pear=3, apple=4}
阅读全文