我对Java比较陌生,经常发现需要对Map<Key, Value>
进行排序关于值(value)观。
由于值不是唯一的,我发现自己在转换 keySet
进入 array
,并通过 array sort 使用 自定义比较器 对该数组进行排序,该比较器根据与键关联的值进行排序。
有没有更简单的方法?
最佳答案
这是一个通用的友好版本:
public class MapUtil {
public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
List<Entry<K, V>> list = new ArrayList<>(map.entrySet());
list.sort(Entry.comparingByValue());
Map<K, V> result = new LinkedHashMap<>();
for (Entry<K, V> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
}
关于java - 按值对 Map<Key, Value> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/109383/