java - 尝试按值对链接的 HashMap <Character, Integer> 进行排序

标签 java sorting linkedhashmap

letterFrequencies.entrySet().stream()
        .sorted(Map.Entry.comparingByValue().reversed())
        .collect(Collectors.toMap(Entry::getKey, Entry::getValue));

我目前正在使用它来尝试,但收到一个错误,显示 The method sorted(Comparator<? super Map.Entry<Character,Integer>>) in the type Stream<Map.Entry<Character,Integer>> is not applicable for the arguments (Comparator<Map.Entry<Object,Comparable<? super Comparable<? super V>>>>)

最佳答案

尝试这样的事情:

LinkedHashMap<Character, Integer> resultSet = 
                   letterFrequencies.entrySet().stream()
                  .sorted(Map.Entry.<Character, Integer>comparingByValue().reversed())
                  .collect(Collectors.toMap(Entry::getKey, Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));

此外,正如 Boris the Spider 所提到的,将结果转储到 HashMap 中不会维护插入顺序,因此此处使用 LinkedHashMap

关于java - 尝试按值对链接的 HashMap <Character, Integer> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47496993/

相关文章:

java - ProcessBuilder 和 FileHandler 之间的区别

java - 如何使链接的 HashMap 可导航?

java - 这段代码使用 "partial"for 循环还是 while 循环更好?

java - 将对象变量添加到数组

java - 如何对列表中两个不同类的字段进行排序?

javascript - 使用 Javascript 从嵌套的 JSON 排序索引

java - 如何保持哈希表中元素的顺序

java - 为什么并发修改会出现在这里

java - 在 Android 中引用文件时遇到问题

c - C中结构体数组的排序