簡體   English   中英

通過減少值來迭代GNU Trove TObjectIntHashMap的推薦方法是什么?

[英]What is the recommended way to iterate a GNU Trove TObjectIntHashMap by decreasing value?

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);

要通過減少計數進行迭代,您唯一可以做的就是使用相同的forEachEntry操作將條目轉儲到AbstractMap.SimpleImmutableEntry的集合或數組(或具有原始值字段的特殊Entry類)中,然后按Collections.sort()進行排序Collections.sort()帶自定義Comparator Collections.sort()Arrays.sort()

正如@leventov所說,您目前需要遍歷整個集合,因為Trove中目前不存在排序的集合。 還有一個特點,要求在這里 ,如果這有趣的是你,你可以進行投票。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM