2011-10-21 3 views
1

私はこのような言葉の発生を含むツリーマップを持っている...発生 - TreeMapの

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

文字列=ワード

整数=発生量。

どのようにして最大のオカレンスを得ることができますか?整数とし、最も高いオカレンスにマッピングされたストリングを取得しますか?

答えて

5

地図を繰り返して線形に検索する必要があります。 TreeMapは、値ではなくキーでソートされます。

+0

...頻繁に何かを見つける必要がある場合は、データ構造を変更する必要があります。 – Vlad

2

あなたは最大のエントリを取得するためにカスタムコンパレータと地図のキーセットに対してCollections.maxを使用することができます。

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

@トーマス:いいえ、私はキーセットを意味します。 @unleashed:コンパレータは2つのStringキーを取ることで動作しますが、比較する代わりに、既存の 'Map'から対応するオカレンスカウント(' Integer')を取得し、それらの値を比較した結果を返します。 –

関連する問題