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

Trying to sort a linked HashMap <Character, Integer> by value

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

你可以像这样传递 Comparator.reverseOrder() 并收集到 LinkedHashMap

letterFrequencies.entrySet().stream()
            .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                    (v1, v2) -> v1, LinkedHashMap::new));