使用Java 8的新API的CollectionUtills进行编译错误

fgo*_*lez 1 java lambda java-8

我想用一些包含数量的对象来迭代一个数组并获得totalQuantity,但是使用Java 8的新API代替每个循环的tipical.

这是我到目前为止的方式:

int totalQuantityOrdered=0;
    totalQuantityOrdered=CollectionUtils.isNotEmpty(details)?details.stream().forEach(detail->totalQuantityOrdered+=detail.getOrderHeader().getQuantity()):totalQuantityOrdered;
Run Code Online (Sandbox Code Playgroud)

但是我收到一个编译错误,告诉我为了使用lambda表达式,变量totalQuantityOrdered必须是final.然后我认为当变量是final时意味着它的值不能被修改,所以在这种情况下我如何实现我想要做的事情?

提前告诉你你的时间.

Era*_*ran 5

有一个更清洁的方法来做到这一点:

int totalQuantityOrdered = 
    details.stream()
           .mapToInt(detail -> detail.getOrderHeader().getQuantity())
           .sum();
Run Code Online (Sandbox Code Playgroud)

这假设getOrderHeader().getQuantity()返回一个int.