加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何打印出地图中最大的数字

发布时间:2020-12-15 04:48:22 所属栏目:Java 来源:网络整理
导读:我正在阅读 java中的地图.我想浏览一个不同数字的地图,并打印出地图中最大的3个数字.这是我的代码: public class Test { private static int number=0; public static void main(String[] args) { MapString,Integer m = new HashMapString,Integer(); m.pu
我正在阅读 java中的地图.我想浏览一个不同数字的地图,并打印出地图中最大的3个数字.这是我的代码:

public class Test {

    private static int number=0;

    public static void main(String[] args) {

        Map<String,Integer> m = new HashMap<String,Integer>();

        m.put("haha",1);
        m.put("aa",2);
        m.put("rewq",3);
        m.put("la",12);
        m.put("oia",10);
        m.put("uyta",4);
        m.put("jpa",5);


        for (Entry<String,Integer> e : m.entrySet()) {

            if (e.getValue() > number) {
                number = e.getValue();
            }

        }
        m.values().remove(number);
        System.out.println(number);

        for (Entry<String,Integer> e : m.entrySet()) {

            if (e.getValue() > number) {
                number = e.getValue();
            }

        }
        m.values().remove(number);
        System.out.println(number);


        for (Entry<String,Integer> e : m.entrySet()) {

            if (e.getValue() > number) {
                number = e.getValue();
            }

        }
        m.values().remove(number);
        System.out.println(number);

    }

}

输出是

12
12
12

如何更改代码以使其打印如下:

12
10
5

谢谢

解决方法

您的代码的问题在于,您使用相同的条件在相同的数字上迭代三次,而不重置最大找到的数字.您的代码基本上找到最大的数字,然后比较地图中的每个项目两次更大的数字.当然,它什么都没找到,并打印出以前找到的最大数字.

你最想要的是:

>获取所有值(不是条目集)
>对值进行排序
>打印出前三个

在Java中:

ArrayList<Integer> values = new ArrayList<Integer>(m.values());
Collections.sort(values);
// turn ascending to descending
Collections.reverse(values);
System.out.println(String.format("%d,%d,%d",values.get(0),values.get(1),values.get(2)));

排序所有值即使您只需要前三个也是一些计算开销,但对于少于几千个条目的列表,它是可以忽略的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读