Java统计数组中指定元素出现次数最直接方式是遍历计数;基础for循环通用清晰,Stream API需注意基本类型用Arrays.stream()、字符串比较用equals()、null判空及自定义对象重写equals()。

Java 中统计数组中指定元素出现次数,最直接的方式就是遍历数组,逐个比较并计数。核心逻辑是:定义一个计数器,循环访问每个元素,匹配目标值时计数器加 1。
基础 for 循环遍历(推荐初学者)
适用于所有数组类型(int、String、自定义对象等),逻辑清晰,易于理解和调试:
- 声明一个 int count = 0
- 用 for (int i = 0; i 遍历索引
- 使用 arr[i].equals(target)(引用类型)或 arr[i] == target(基本类型)判断相等
- 匹配成功则 count++
增强 for 循环(更简洁)
代码更简短,避免索引操作,适合只读遍历:
- 写法:for (Type item : arr)
- 对 int 数组:if (item == target) count++
- 对 String 或对象数组:if (Objects.equals(item, target)) count++(推荐用 Objects.equals 避免空指针)
使用 Stream(Java 8+,函数式风格)
一行代码可实现,适合已有集合或追求简洁表达的场景:
立即学习“Java免费学习笔记(深入)”;
- int[] arr = {1, 2, 3, 2, 2};
long count = Arrays.stream(arr).filter(x -> x == 2).count(); - String[] strs = {"a", "b", "a"};
long count = Arrays.stream(strs).filter("a"::equals).count(); - 注意:基本类型数组需用 Arrays.stream(),引用类型可直接用 Stream.of()
注意事项与常见坑
实际编码中容易忽略的关键点:
- 字符串比较别用 ==:必须用 .equals() 或 Objects.equals()
- 数组为 null 时要先判空,否则直接遍历会抛 NullPointerException
- 自定义对象需重写 equals() 和 hashCode(),否则默认比较的是引用地址
- 大小写敏感?是否需要 trim()?这些业务逻辑需在比较前统一处理


















