2011-10-21 41 views
1

我有一個包含這樣的單詞的出現樹圖...發生 - TreeMap中

TreeMap <String,Integer> occurrence = new TreeMap <String,Integer>(); 

字符串=字

整數=發生量。

我將如何獲得最大出現次數 - 整數然後獲取映射到最高出現次數的字符串?

回答

5

你必須遍歷地圖併線性搜索。 TreeMap按鍵排序,而不是值。

+0

...或者如果您發現自己需要頻繁查找某個頻率,則應該更改數據結構。 – Vlad

2

您可以使用Collections.max對Map的鍵集使用自定義比較,以獲得最大的條目:

String highestOccurrence = Collections.max(occurrence.keySet(), 
    new Comparator<String>() { 
    public int compare(String a, String b) { 
     return occurrence.get(a).compareTo(occurrence.get(b)); 
    } 
}); 

這封裝了迭代本身對你,但在幕後它仍然是一個線性搜索。

+0

你是指值? –

+0

比較器如何工作? – unleashed

+0

@Thomas:不,我的意思是鍵盤。 @unleashed:比較器通過使用兩個String鍵來工作,但不是比較它們,而是從現有的Map中獲取相應的出現次數('Integer'),並返回比較這些值的結果。 –