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

标签 java sorting dictionary collections

我对Java比较陌生,经常发现我需要对值排序Map<Key, Value>

由于值不是唯一的,因此我发现自己将keySet转换为array,并使用自定义比较器对数组进行排序,该自定义比较器对与键关联的值进行排序。

有更容易的方法吗?

最佳答案

这是通用的版本:

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/55816451/

相关文章:

使用代理顺序对不可排序列表进行 Haskell 排序

c++ - 根据结构的元素对结构对象的 vector 进行排序 - C++

swift - 在 Swift 中从数组创建字典

java - 由 : android. view.InflateException: Binary XML file line #7: Error inflating class fragment 引起

java - 如何在其他 Java 程序中使用 ProcessBuilder 运行 Java 程序。 (使用 -cp 和 -Xbootclasspath 命令)

python - 美汤加工

c# - 枚举是去这里的正确方法吗?

Python - 如何计算两个字典的相等部分?

java - Gradle 不支持强制依赖版本

Java 字符串对象创建