このメソッドを使用して、マップからカウントで上位 100 要素を取得しています。グアバがこれらをどのように実装しているか知っている人はいますか?
Ordering<String> valueComparator =
Ordering.natural().onResultOf(
Functions.forMap(WordCounts)).compound(Ordering.natural());
ImmutableSortedMap<String, Integer> SortedWordCounts =
ImmutableSortedMap.copyOf(WordCounts,
Collections.reverseOrder(valueComparator));
Map<String, Integer> TopWordCounts =
SortedWordCounts.headMap(SortedWordCounts.keySet().asList().
get(100));
ここでは詳細はわかりませんでした http://guava-libraries.googlecode.com/svn/trunk/gwt-javadoc/com/google/common/collect/ImmutableSortedMap.html
これが非効率的かどうか、およびhttp://en.wikipedia.org/wiki/Selection_algorithm#Linear_general_selection_algorithm_-_Median_of_Medians_algorithmのような上位 k アルゴリズムを使用する必要があるかどうかを考えようとしています。そのよう なアルゴリズムを実行するには、配列にマップしてからマップに戻す可能性が高いため、価値がないかもしれないと思います。