跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

在Java中如何统计List中元素出现次数

答案是使用Map或Stream API统计List元素频次最高效。通过HashMap手动遍历统计,或用Java 8的Stream结合groupingBy和counting()实现简洁计数,Collections.frequency适用于小数据量但性能较差,推荐Stream方式兼顾性能与可读性。 在Java中统计List中元素出现的次数,有多种方式可以实现。最常用且高效的方法是使用 Map 来记录每个元素及其出现次数,或者借助Java 8的 Stream API 结合 Collectors.groupingBy 和 Collectors.counting() 。 方法一:使用HashMap手动统计 遍历List,将每个元素作为key存入HashMap,value为出现的次数。 示例代码:
import java.util.*; List list = Arrays.asList("apple", "banana", "apple", "orange", "banana", "apple"); Map countMap = new HashMap<>(); for (String item : list) { countMap.put(item, countMap.getOrDefault(item, 0) + 1); } System.out.println(countMap); // 输出: {orange=1, banana=2, apple=3}
方法二:使用Java 8 Stream API 利用Stream的分组功能,简洁地统计频次。 立即学习 “ Java免费学习笔记(深入) ”; Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载
Map countMap = list.stream() .collect(Collectors.groupingBy( Function.identity(), Collectors.counting() )); System.out.println(countMap); // 输出: {orange=1, banana=2, apple=3}
Function.identity() 表示以元素本身作为分组依据, Collectors.counting() 统计每组的数量。 方法三:使用Collections.frequency(适合小数据量) 对每个不同的元素调用 Collections.frequency() ,适用于去重后的集合遍历。
Set uniqueItems = new HashSet<>(list); for (String item : uniqueItems) { int freq = Collections.frequency(list, item); System.out.println(item + ": " + freq); }
这种方式时间复杂度较高(O(n²)),不推荐用于 大数据 量。 基本上就这些常用方法。如果注重性能和可读性,推荐使用Stream方式;若需兼容老版本Java,HashMap手动计数最稳妥。

相关文章