2

GNU Trove / trove4j TObjectIntHashMap は、文字列の出現回数をカウントするのに最適です。

TObjectIntHashMap<Integer> map = new TObjectIntHashMap<>();
map.adjustOrPutValue(string, 1, 1);

現在、一般的なタスクは、カウントが最大の文字列を要求するか、カウントを減らして反復することです。これをどのように行いますか?

ありがとう、マルセル

4

2 に答える 2

2

には、これに対する特別な操作はありませんTObjectIntHashMap。最大値のエントリを取得するには、すべてのエントリを反復処理します。

class GetMaxEntry implements TObjectIntProcedure {
    Object key;
    int value = Integer.MIN_VALUE;
    public boolean execute(Object k, int v) {
        if (v >= value) {
            key = k;
            value = v;
        }
        return true;
    }
}
GetMaxEntry getMaxEntry = new GetMaxEntry();
map.forEachEntry(getMaxEntry);
//process(getMaxEntry.key, getMaxEntry.value);

カウントを減らして反復するには、同じ操作AbstractMap.SimpleImmutableEntryを使用してエントリを s (またはプリミティブ値フィールドを持つ特別な Entry クラス) のコレクションまたは配列にダンプし、 custom で並べ替えます。forEachEntryCollections.sort()Arrays.sort()Comparator

于 2014-04-09T14:45:38.050 に答える
1

@leventov が言ったように、現在、ソートされたコレクションは Trove に存在しないため、コレクション全体を反復処理する必要があります。ここに機能リクエストがあり、興味がある場合は投票できます。

于 2014-04-09T17:05:53.363 に答える