我正在阅读有关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
谢谢
m.values().stream().sorted(Comparator.reverseOrder()).limit(3).forEach(System.out::println);
仅适用于Java 8。 - Dominik Sandjaja