GNU / trove4j TObjectIntHashMap非常适合计数字符串的出现:
TObjectIntHashMap<Integer> map = new TObjectIntHashMap<>();
map.adjustOrPutValue(string, 1, 1);现在,一个常见的任务是请求具有最高计数的字符串,或者通过减少计数进行迭代。你会怎么做?
谢谢你,马塞尔
发布于 2014-04-09 14:45:38
在TObjectIntHashMap中没有这方面的特殊操作。要获得带有max值的条目,请遍历所有条目:
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.SimpleImmutableEntrys (或带有原始值字段的特殊条目类),然后使用自定义Comparator按Collections.sort()或Arrays.sort()进行排序。
发布于 2014-04-09 17:05:53
正如@leventov所说,您目前需要迭代整个集合,因为排序集合目前不存在于Trove中。如果您对此感兴趣,可以对一个特性请求这里进行投票。
https://stackoverflow.com/questions/22961673
复制相似问题