给定一组可能重复的对象,我希望最终得到每个对象的出现次数。我通过初始化一个空的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 语言特定功能持开放态度。