Поиск ключа, связанного с максимальным значением на карте Java - PullRequest
119 голосов
/ 06 мая 2011

Какой самый простой способ получить ключ, связанный с максимальным значением на карте?

Я полагаю, что Collections.max (someMap) вернет ключ Max, когда вы хотите ключ, соответствующий максимальному значению.

Ответы [ 13 ]

0 голосов
/ 04 июня 2019
int maxValue = 0;
int mKey = 0;
for(Integer key: map.keySet()){
    if(map.get(key) > maxValue){
        maxValue = map.get(key);
        mKey = key;
    }
}
System.out.println("Max Value " + maxValue + " is associated with " + mKey + " key");
0 голосов
/ 25 апреля 2016

вы можете сделать это

HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
hm.put(1,10);
hm.put(2,45);
hm.put(3,100);
Iterator<Integer> it = hm.keySet().iterator();
Integer fk = it.next();
Integer max = hm.get(fk);
while(it.hasNext()) {
    Integer k = it.next();
    Integer val = hm.get(k);
    if (val > max){
         max = val;
         fk=k;
    }
}
System.out.println("Max Value "+max+" is associated with "+fk+" key");
0 голосов
/ 20 сентября 2015

Для своего проекта я использовал слегка модифицированную версию решения Джона и Фаты.В случае нескольких записей с одинаковым значением, он возвращает последнюю найденную запись:

public static Entry<String, Integer> getMaxEntry(Map<String, Integer> map) {        
    Entry<String, Integer> maxEntry = null;
    Integer max = Collections.max(map.values());

    for(Entry<String, Integer> entry : map.entrySet()) {
        Integer value = entry.getValue();

        if(null != value && max == value) {
            maxEntry = entry;
        }
    }

    return maxEntry;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...