使用 API of Java 8 的新 API 的 CollectionUtills 的编译错误
Compilation error using CollectionUtills of the new API of Java 8
我想用一些包含数量的对象迭代一个数组并获得 totalQuantity,但是使用 Java 8 的新 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()
returns 和 int
。
我想用一些包含数量的对象迭代一个数组并获得 totalQuantity,但是使用 Java 8 的新 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()
returns 和 int
。