[英]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.