Я читал о картах в 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 8 только:... 'm.values () потока() сортируется (Comparator.reverseOrder()) предел (3) .forEach (System.out :: println); ' –
Вы бы облегчили себе жизнь, если бы вы использовали цикл for для поиска/удаления/печати 3 раза вместо того, чтобы дублировать код. –
@DominikSandjaja Но это занимает память O (n) и O (n log n) для сортировки. top n должен принимать n (3 в этом случае) память и линейное время. –