You need to enable JavaScript to run this app. 如何使用Java Stream统计列表指定单词个数并返回int类型结果
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Stream统计列表指定单词个数并返回int类型结果

基于Java Stream的空字符串计数实现

Stream.count() 设计为返回long类型,是为了适配超大容量集合、无限流的计数场景,规避int取值范围溢出的风险,想要得到int类型的返回值,只需要在计数环节做对应类型转换即可,完全可以替代原有的循环统计逻辑。

等价替换的Stream版工具方法

和原有循环实现逻辑完全一致的方法代码如下:

private static int getCountEmptyStringStream(List<String> strings) {
    return (int) strings.stream()
            .filter(element -> element.equals(""))
            .count();
}

其他可选的Stream实现方案

如果不想手动做强制类型转换,也可以选择下面两种等价写法,最终返回值天然就是int类型:

  • 匹配项映射为数值1后求和:
    private static int getCountEmptyStringStream(List<String> strings) {
        return strings.stream()
                .filter(element -> element.equals(""))
                .mapToInt(element -> 1)
                .sum();
    }
    
  • 通过reduce累加维护计数器,和循环的累加逻辑思路高度对齐:
    private static int getCountEmptyStringStream(List<String> strings) {
        return strings.stream()
                .reduce(0, (counter, element) -> element.equals("") ? counter + 1 : counter, Integer::sum);
    }
    

实用注意点

  • 普通业务场景下,列表元素总数远小于int的取值上限(约21亿),直接将count()的long返回值强转为int不会有数值风险,是最简洁的实现方式。
  • 如果需要处理超大容量集合,建议用Math.toIntExact()做转换,一旦计数结果超过int取值上限,方法会直接抛出ArithmeticException告警,避免返回溢出后的错误数值,示例写法:
    return Math.toIntExact(strings.stream().filter(""::equals).count());
    
  • 提示:过滤条件可以用方法引用简写,把element -> element.equals("")写为""::equals,代码更简洁,同时还能避免列表中存在null元素时,调用空对象的equals方法抛出空指针异常。

内容的提问来源于stack exchange,提问作者user3241026

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 09:15:02