Collections.frequency用于统计指定元素在Collection中出现次数,通过遍历比较实现,支持null,依赖equals()判断,时间复杂度O(n),大数据量时建议用Collectors.groupingBy替代。

Collections.frequency 是 Java 集合工具类中一个简单但实用的方法,用于统计指定元素在 Collection(如 List、Set、Queue 等)中出现的次数。它内部通过遍历集合逐个比较实现,适用于大多数基础统计场景。
基本用法:传入集合和目标元素
方法签名如下:
public static int frequency(Collection> c, Object o)注意两点:
- 第一个参数是任意 Collection 实现(不能是数组或 Map)
- 第二个参数是待查找的元素,类型为 Object,支持 null(若集合中含 null,也会被正确计数)
常见使用示例
以 ArrayList 为例:
立即学习“Java免费学习笔记(深入)”;
int count = Collections.frequency(list, "a"); // 返回 3
对包含 null 的集合也有效:
Listint nullCount = Collections.frequency(listWithNull, null); // 返回 2
注意事项与限制
该方法依赖元素的 equals() 判断,因此要确保目标元素与集合中元素能正确比较:
- 自定义对象需重写 equals()(和 hashCode(),虽然这里不调用 hashCode)
- 浮点数慎用:
Collections.frequency(list, 1.0)对1.0f不匹配,因 float 和 double 类型不同 - 性能为 O(n),大数据量时不如预构建 Map 统计(如用 Collectors.groupingBy)
替代方案(适合高频或复杂统计)
如果需要多次查询或统计全部元素频次,推荐用流式 API:
// 统计所有元素频次Map
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
之后可快速查任意元素:freqMap.getOrDefault("a", 0L)


















