尝试按值对链接的 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));
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));