使用java以降序输出Map.Entry <Sentence,Integer>

2 java printing sorting hashmap output

显然这是一个非常天真的尝试,但我对编程缺乏经验.我想做的是按降序打印这些值,即最大打印首先打印然后最小打印最后打印,我该如何实现?

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());
    } 
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 8

您需要对地图条目的集合进行排序.在Java 8中,这需要非常简单的代码:

ontology.ruleCount.entrySet().stream()
        .sorted(reverseOrder(Map.Entry.comparingByValue()))
        .forEach(e -> System.out.println(e.getKey() + " : " + e.getValue()));
Run Code Online (Sandbox Code Playgroud)

(暗示import static java.util.Collections.reverseOrder;)

  • @BoristheSpider 在那里,这个版本有效。奇怪的是,使用 `comparingByValue().reversed()` 失败了,但只是内联了 `reversed` 的代码,即 `Collection.reverseOrder(this)`,就可以了。 (2认同)