显然,这是一个非常天真的尝试,但我在编程方面非常缺乏经验。我想要做的是按降序打印这些值,也就是说,最大的先打印,然后最小的打印最后,我如何实现这一点?
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());
} 发布于 2015-01-25 13:45:21
您需要对地图条目的集合进行排序。在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;)
发布于 2020-08-10 09:24:04
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));
发布于 2015-01-25 13:39:27
基本程序(预Java 8)是:
ontology.ruleCount.entrySet()的元素写入List,例如ArrayList。Comparator,它查看条目的值Collections.sort对List进行排序,使用Comparator。https://stackoverflow.com/questions/28136939
复制相似问题