java - 按值对 Map<Key, Value> 进行排序

标签 java sorting dictionary collections

我对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/

相关文章:

java - RSyntaxTextArea 数字后跟字母以不同的方式突出显示 [Java]

java - 奇怪 - 第三个 @PathVariable 在 Spring 中不起作用

java - Tomcat 7、JSF 2.0 和@PostConstruct

java - jSTL输出不起作用

javascript - 数据表日期排序(DD.MM.YYYY.)格式

c# - 如何使用迭代器获取字典的键/值?

Python:获取两个字典之间的差异

c - 如何删除一个元素来对数组进行排序

java - Collections.sort 不是排序

dictionary - map 与 mapM 行为