给定一组可能包含重复元素的对象集合,我想得到每个对象出现次数的计数。我通过初始化一个空的 Map
,然后遍历 Collection
并将对象映射到其计数(每次在 map 中已经包含该对象时递增计数)来实现此目标。
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语言特定功能。
else
语句中应该是++numOccurrence
,否则我们会用1覆盖出现次数。 - Jernej Jerin