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

Java 8中如何用Lambda/FP实现嵌套列表元素总数统计(单行代码)

Java 8 一行代码实现嵌套列表元素总数累加的函数式方案

嘿,这个需求用Java 8引入的Stream API就能完美解决,一行代码搞定,还兼顾了可读性和简洁性!

你原来的循环逻辑是遍历listOfClassB里的每个ClassB实例,累加其内部anotherObjList的元素个数。用函数式编程改写的话,核心思路就是把集合转换成流,然后映射出每个列表的大小,最后求和:

int totalNo = listOfClassB.stream()
                          .mapToInt(classB -> classB.getAnotherObjList().size())
                          .sum();

要是怕getAnotherObjList()返回null导致空指针异常,还可以加个安全处理,比如用Optional或者空判断来兜底:

// 方式1:显式空判断
int totalNo = listOfClassB.stream()
                          .mapToInt(classB -> classB.getAnotherObjList() != null ? classB.getAnotherObjList().size() : 0)
                          .sum();

// 方式2:用Optional处理更优雅
int totalNo = listOfClassB.stream()
                          .map(ClassB::getAnotherObjList)
                          .filter(Objects::nonNull)
                          .mapToInt(List::size)
                          .sum();

另外提一句,如果你的数据集很大,还可以把stream()换成parallelStream()来启用并行计算,利用多线程提升效率——当然小数据量的话串行流就足够了,性能和普通循环差别不大,但代码整洁度提升不少。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:00:29