给定某个内容的排序列表(a,a,b,c,c)
识别 a
在列表中存在 2 次、b
一次、c
2 次的最有效方法是什么?
除了明显制作计数图之外。我们能做得更好吗?
if (map.containsKey(key)) {
map.put(key, map.get(key) + 1);
} else {
map.put(key, 1);
}
最终的目标是迭代列表并知道在任何给定点之前某个键被看到了多少次。将事物放入 map 中,似乎是我们真正不需要的步骤。
最佳答案
我会使用 Multiset
实现于Guava - 可能是 HashMultiset
。这避免了必须执行 put
/get
在每次迭代中 - 如果添加项目时该项目已经存在,它只会增加计数。这有点像使用 HashMap<Foo, AtomicInteger>
.
请参阅Guava User's Guide entry on Multiset
了解更多详情。
关于java - 如何获取列表中每个元素的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502807/