gpt4 book ai didi

java - 累积另一个列表中列表的计数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:05 24 4
gpt4 key购买 nike

目前我有如下代码。一个嵌入在另一个列表中的列表,我想获得嵌入列表对象的总数。

我想为此写一个快速的 oneliner。我可以在 Java 8 中执行高效的 Lambda 或 FP 技巧吗?

int totalNo = 0;
for (ClassB classB : listOfClassB) {
totalNo+= classB.getAnotherObjList().size();
}

最佳答案

long totalSum = listOfClassB.stream()
.mapToInt(elem -> elem.getAnotherObjList().size())
.sum();

我认为 sum 的结果是一个 long,因为多个整数可以超过 max int 值;如果您确信它不会导致溢出,您可以随时施放它。

至少按照上面的格式,它并不完全是单行的,但可以说它适合单个表达式。

如果第一个列表中的元素为空,或者如果 getAnotherObjList() 返回空值,您可以通过过滤掉这些情况来支持:

long totalSum = listOfClassB.stream()
.filter(Objects::nonNull)
.map(ClassB::getAnotherObjList)
.filter(Objects::nonNull)
.mapToInt(List::size)
.sum();

关于java - 累积另一个列表中列表的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54262192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com