gpt4 book ai didi

java - java 集合中计数出现次数的优雅方法

转载 作者:IT老高 更新时间:2023-10-28 21:05:33 25 4
gpt4 key购买 nike

给定一个可能重复的对象集合,我希望得到每个对象的出现次数。我通过初始化一个空的 Map,然后遍历 Collection 并将对象映射到它的计数来做到这一点(每次映射已经包含对象时增加计数)。

public Map<Object, Integer> countOccurrences(Collection<Object> list) {
Map<Object, Integer> occurrenceMap = new HashMap<Object, Integer>();
for (Object obj : list) {
Integer numOccurrence = occurrenceMap.get(obj);
if (numOccurrence == null) {
//first count
occurrenceMap.put(obj, 1);
} else {
occurrenceMap.put(obj, numOccurrence++);
}
}
return occurrenceMap;
}

对于计算出现次数的简单逻辑来说,这看起来太冗长了。有没有更优雅/更短的方法来做到这一点?我对完全不同的算法或允许更短代码的 Java 语言特定功能持开放态度。

最佳答案

查看 Guava's Multiset .几乎正是您想要的。

不幸的是,它没有 addAll(Iterable iterable) 函数,但是在您的集合上调用 add(E e) 的简单循环就足够简单了。

编辑

我的错,它确实有一个 addAll 方法 - 必须的,因为它实现了 Collection。

关于java - java 集合中计数出现次数的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14260134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com