java - 如何获取列表中每个元素的计数?

标签 java

给定某个内容的排序列表(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/

相关文章:

firefox - JRE 和 Java 插件的区别

java.sql.SQLException : Can not issue executeUpdate() or executeLargeUpdate() for SELECTs

java - 如何序列化 JComboBox 选择?

java - 如何使用 JFileChooser 保存文件?

java - Optional 的惰性评估

java - 使用 Java 客户端和 X-Pack/HTTPS 连接到 ElasticSearch Cloud 5.x

java - 检查异常后程序抛出异常

java - 删除连续出现的某些字母

java - 找不到 PropertySource : I/O error on GET request

java - 为什么 SessionAttributes 在 GET 重定向时被清除?