GNU Trove / trove4j TObjectIntHashMap は、文字列の出現回数をカウントするのに最適です。
TObjectIntHashMap<Integer> map = new TObjectIntHashMap<>();
map.adjustOrPutValue(string, 1, 1);
現在、一般的なタスクは、カウントが最大の文字列を要求するか、カウントを減らして反復することです。これをどのように行いますか?
ありがとう、マルセル
には、これに対する特別な操作はありません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 で並べ替えます。forEachEntry
Collections.sort()
Arrays.sort()
Comparator
@leventov が言ったように、現在、ソートされたコレクションは Trove に存在しないため、コレクション全体を反復処理する必要があります。ここに機能リクエストがあり、興味がある場合は投票できます。