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))); 排序所有值即使您只需要前三个也是一些计算开销,但对于少于几千个条目的列表,它是可以忽略的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |