2011-03-09 3 views
2

Я хочу найти наибольшее значение в Hashtable из Integer значений. Есть ли быстрый и эффективный способ достичь этого?JAVA Hashtable найти максимальное значение

Это мой код ...

Hashtable<String,Integer> h = new Hashtable<String,Integer>(); 

h.add("a",1); 
h.add("b",5); 
h.add("c",3); 
h.add("d",5); 
h.add("e",2); 
h.add("f",1); 

int max = ???; 

Мне нужно найти максимальное значение, которое в приведенном выше примере является 5. Hashtable всегда будет небольшим, в среднем менее 100 записей.

+2

перебирать хэш-таблицу? – iluxa

+0

Очень ценные ребята –

ответ

20

Используйте Collections#max() на Map#values().

int max = Collections.max(h.values()); 

Обратите внимание, что вы должны использовать Map#put() поставить элементы, нет Map#add().

+0

Вау, я этого не знал! – zengr

0

Другой подход:

new TreeSet(h.values()).last() 
+0

Но он всегда будет медленнее, чем повторение значений. –

1

а) не писать

h.put ("a", 1); 

б) не могли бы вы получить значения, как это:

java.util.Collection <Integer> ci = h.values(); 
// [1, 5, 3, 5, 2, 1] 

Теперь обыскать значения.

Смежные вопросы