2013-11-19 2 views
1

Итак, я по-прежнему относительно новичок в Java, и этот вопрос может быть довольно тривиальным, но у меня возникают проблемы с получением ответа.Поиск максимального значения в Hashmap Hashmaps

Я пытаюсь найти максимальное значение внутри созданного вами хэшмапа. Я инициализировал hashmap и заполнил его, но вот структура:

HashMap<Double,HashMap<Double,Double>> 

любая помощь была бы потрясающей.

Спасибо!

EDIT: Для разъяснения, я хотел бы знать значение наибольшего входа в Хеше

+7

максимальный ключ или значение? ответ зависит от того, какой из них вы хотите ... –

+0

Вы имеете в виду: рассматривая все ключи первого уровня, ключи второго уровня и значения как один набор значений «double», найдите максимальное значение? Или что-то еще? –

+0

Просьба показать код, который у вас есть до сих пор, а также любые проблемы, с которыми вы столкнулись - неправильный вывод, сообщения компилятора и следы стека исключений. – rgettman

ответ

3

Так у вас есть карта корня полной вложенных карт. Вы будете перебирать все значения в корневой карте - выборку вложенных карт. И затем повторяйте каждое значение на каждой вложенной карте.

Compexity будет O (n), где n - количество всех ключей во всех вложенных картах плюс количество ключей в корневой карте.

Я думаю, что вы не можете найти максимальное значение быстрее, если используете HashMaps.

код будет выглядеть следующим образом:

final HashMap<Double, HashMap<Double, Double>> data = new HashMap<Double, HashMap<Double, Double>>(); 

Double prev = null; 
for (final HashMap<Double, Double> nestedMap : data.values()) { 
    for (final Double value : nestedMap.values()) { 
     if (prev == null) { 
      prev = value; 
      continue; 
     } 
     prev = Math.max(value, prev); 
    } 
} 

System.out.println("The max value is " + prev); 
Смежные вопросы