我想使用一些包含数量的对象来迭代数组,并获取totalQuantity,但是要使用Java 8的新API而不是每个循环的典型API。
到目前为止,这就是我正在做的事情:
int totalQuantityOrdered=0;
totalQuantityOrdered=CollectionUtils.isNotEmpty(details)?details.stream().forEach(detail->totalQuantityOrdered+=detail.getOrderHeader().getQuantity()):totalQuantityOrdered;
但是我收到一个编译错误,告诉我为了使用lambda表达式,变量totalQuantityOrdered必须是最终的。然后,我认为当变量为final时,意味着它的值无法修改,那么在那种情况下,我如何实现我想做的事情?
提前感谢您的时间。
最佳答案
有一种更干净的方法可以做到这一点:
int totalQuantityOrdered =
details.stream()
.mapToInt(detail -> detail.getOrderHeader().getQuantity())
.sum();
假定
getOrderHeader().getQuantity()
返回int
。