You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Streams实现特定条件下的数值求和?

Java Streams实现特定条件下A列数值求和

数据示例

ABC
3360
7968
1340
1260
K10060

需求说明

仅当B值等于6且C值等于0时,对A列的值求和,结果应为33 + 12 + 100 = 145。其中A列的值可能包含字母(如K100),需忽略字母部分,按对应数字(K100视为100)处理。

完整实现代码

answer += someObj.someList() // answer最终应为145
    .stream()
    .filter(e -> e != null && e.getB() == 6 && e.getC() == 0)
    .mapToInt(e -> {
        // 提取A字段中的纯数字部分
        String numStr = e.getA().replaceAll("[^0-9]", "");
        // 转换为整数,若提取后无数字则返回0(可选容错处理)
        return numStr.isEmpty() ? 0 : Integer.parseInt(numStr);
    })
    .sum();

代码说明

  • 过滤阶段:通过filter筛选出非空、B=6且C=0的元素,确保只处理符合条件的数据。
  • 转换阶段:使用mapToInt将A字段的字符串转换为整数:
    • 利用正则表达式[^0-9]匹配所有非数字字符,替换为空后得到纯数字字符串;
    • 加入空字符串判断,避免纯字母的A字段引发NumberFormatException。
  • 求和阶段:调用sum()方法对所有转换后的整数求和,结果累加到answer变量中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:15:38