我想使用一些包含数量的对象来迭代数组,并获取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

08-04 18:56