以 java 降序输出 Map.Entry<Sentence, Integer>
output Map.Entry<Sentence, Integer> in descending order with java
显然这是一个非常幼稚的尝试,但我对编程还很缺乏经验。我想做的是按降序打印这些值,即先打印最大的值,然后再打印最小的值,我该如何实现?
for (Map.Entry<Sentence, Integer> entry : ontology.ruleCount.entrySet())
{
if(entry.getValue() >= 10)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 9)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 8)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 7)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 6)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 5)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 4)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 3)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 2)
System.out.println(entry.getKey()+" : "+entry.getValue());
}
基本程序(pre-Java 8)是:
- 将
ontology.ruleCount.entrySet()
的元素写成List
,例如一个 ArrayList
.
- 实施一个合适的
Comparator
来查看条目的值
- 使用
Collections.sort
使用 Comparator
. 对您的 List
进行排序
- 随心所欲地使用排序列表!
您需要对地图条目集合进行排序。在 Java 8 中,这需要非常简单的代码:
ontology.ruleCount.entrySet().stream()
.sorted(reverseOrder(Map.Entry.comparingByValue()))
.forEach(e -> System.out.println(e.getKey() + " : " + e.getValue()));
(暗示 import static java.util.Collections.reverseOrder;
)
Entry.comparingByValue().reversed
在根据值降序对地图进行排序时不起作用。这是一个简单的解决方案
UnSortedMap.entrySet().stream()
.filter(e -> e.getValue() > 1)
.sorted(Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue,
(e1, e2) -> e1, LinkedHashMap::new));
显然这是一个非常幼稚的尝试,但我对编程还很缺乏经验。我想做的是按降序打印这些值,即先打印最大的值,然后再打印最小的值,我该如何实现?
for (Map.Entry<Sentence, Integer> entry : ontology.ruleCount.entrySet())
{
if(entry.getValue() >= 10)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 9)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 8)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 7)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 6)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 5)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 4)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 3)
System.out.println(entry.getKey()+" : "+entry.getValue());
if(entry.getValue() >= 2)
System.out.println(entry.getKey()+" : "+entry.getValue());
}
基本程序(pre-Java 8)是:
- 将
ontology.ruleCount.entrySet()
的元素写成List
,例如一个ArrayList
. - 实施一个合适的
Comparator
来查看条目的值 - 使用
Collections.sort
使用Comparator
. 对您的 - 随心所欲地使用排序列表!
List
进行排序
您需要对地图条目集合进行排序。在 Java 8 中,这需要非常简单的代码:
ontology.ruleCount.entrySet().stream()
.sorted(reverseOrder(Map.Entry.comparingByValue()))
.forEach(e -> System.out.println(e.getKey() + " : " + e.getValue()));
(暗示 import static java.util.Collections.reverseOrder;
)
Entry.comparingByValue().reversed
在根据值降序对地图进行排序时不起作用。这是一个简单的解决方案
UnSortedMap.entrySet().stream()
.filter(e -> e.getValue() > 1)
.sorted(Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue,
(e1, e2) -> e1, LinkedHashMap::new));