2015-03-14 3 views
0

У меня возникла эта проблема. Мне нужно вернуть ключ в hashmap с наибольшим значением, трюк здесь в том, что метод должен учитывать сценарии краевого случая. Я могу использовать только указанные выше импорт, поэтому Map.Entry не допускается. Collections.sort нет и т. Д. Спасибо.Java-сборка case case hashmap

+0

Похоже на HW. Итак, что вы пробовали и где вы застряли? Не могли бы вы отправить код, который компилируется? –

+1

Первое, что нужно сделать: узнать значение пробела, чтобы сделать ваш код более удобочитаемым. Далее, даже без импорта, вы все равно можете использовать «Map.Entry». Затем, что вы хотите сделать, если есть несколько ключей для одного и того же значения? Или вообще нет ценностей? (Это краевые случаи, о которых я бы подумал ...) –

+1

Я предполагаю, что это домашнее задание, так как в противном случае импорт довольно дешевый :). Подсказка: какие крайние случаи (случаи на грани между одним решением и другим), как вы думаете, о чем учитель говорит? – flup

ответ

0

Решение действительно неэффективно, но если вы не можете добавить какие-либо другие импортеры ... он работает. Первый шаг, чтобы найти максимальное значение среди целых чисел, а затем для каждого из ключей, проверить, если map.get(key).equals(max):

public static String findLargest(HashMap<String, Integer> map) { 
    //step 1 
    int max = Integer.MIN_VALUE; 
    for (int i : map.values()) { 
     max = Math.max(max, i); 
    } 
    //step 2   
    for (String str : map.keySet()) { 
     if (map.get(str).equals(max)) { 
      return str; 
     } 
    } 
    return null; 
} 
+0

Вы можете сделать это за один проход, если вы сами прокрутите запись. –

+0

Что делать, если каждое число отрицательно? Тогда вы будете искать max, который даже не существует на карте. – Tom

+0

Мне нравится решение, но я не разбираюсь в этих случаях, я знаю, что это такое. «Было исключение: java.lang.AssertionError« – Shifty