【发布时间】:2015-05-29 02:41:40
【问题描述】:
如何使用 stream api 和嵌套的 foreach 循环计算总和?
//java7
Double sum = null;
for (FirstNode first : response.getFirstNodes()) {
if (first.isValid()) {
for (SndNnode snd : first.getSndNodes()) {
if (snd.getType() == NodeType.AMOUNT) {
sum += snd.getAmount();
break;
}
}
}
}
//java8
response.getFirstNodes().stream().filter(first -> first.isValid()).mapToDouble(???).sum();
我的 snd foreach 循环是:
first.getSndNodes().stream().filter(snd -> snd.getType() == NodeType.AMOUNT).mapToDouble(snd -> snd.getAmount()).findFirst().sum();
我现在如何将 snd foreach 循环集成到第一个循环中,以获得嵌套列表的全局总和?
【问题讨论】:
-
我认为
break;语句是多余的 -
如果
getSndNodes()返回一个非常大的列表并且我只想获得第一个/唯一的结果,则不会。但当然,这实际上只适用于非常大的列表,并且大多数时候不会产生任何影响。
标签: java foreach java-8 java-stream