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

标签 java sorting dictionary collections

我需要对值进行 Map<Key, Value> 排序。

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

有没有更简单的方法?

最佳答案

这是一个通用友好的版本:

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

相关文章:

python - 使用 dict 和 map 在 Dataframe 中创建新列只给出 NaN

python - 如何使用列表值对字典进行排序?

java - IE8/JRE1.6.0_24 中的 JApplet -- getAppletContext() 和 JSObject.getWindow() 上的 NullPointerException

mysql - 使用 WHERE 和 BETWEEN 对两列进行排序

.net - 如果 DataGrid 列已排序(而不是排序),我如何收到通知

javascript - 在 JavaScript 中按另一个数组的内容排序

Python计算字符串中不与字符串重叠的出现次数

java - 如何打印 json 对象和数组值?

java - 在 gwt java 之上添加文本框

java - JAVA 不能抛出 AuthenticationException 类型的异常