首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用java按降序输出Map.Entry<Sentence、Integer>

用java按降序输出Map.Entry<Sentence、Integer>
EN

Stack Overflow用户
提问于 2015-01-25 13:28:06
回答 3查看 4.4K关注 0票数 3

显然,这是一个非常天真的尝试,但我在编程方面非常缺乏经验。我想要做的是按降序打印这些值,也就是说,最大的先打印,然后最小的打印最后,我如何实现这一点?

代码语言:javascript
复制
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());
    } 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-25 13:45:21

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

代码语言:javascript
复制
ontology.ruleCount.entrySet().stream()
        .sorted(reverseOrder(Map.Entry.comparingByValue()))
        .forEach(e -> System.out.println(e.getKey() + " : " + e.getValue()));

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

票数 9
EN

Stack Overflow用户

发布于 2020-08-10 09:24:04

Entry.comparingByValue().reversed不按降序对地图进行排序。这里有一个简单的解决方案

代码语言:javascript
复制
  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));

票数 2
EN

Stack Overflow用户

发布于 2015-01-25 13:39:27

基本程序(预Java 8)是:

  1. ontology.ruleCount.entrySet()的元素写入List,例如ArrayList
  2. 实现一个适当的Comparator,它查看条目的值
  3. 使用Collections.sortList进行排序,使用Comparator
  4. 使用排序列表,无论您喜欢!
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28136939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档