我有以下Java POJO:
public class Order {
private List<OrderLine> orderLines;
private String name;
// ... lots of other fields
// Getters & setters & ctors down here
}
public class OrderLine {
private String productId;
private Integer quantity;
// Getters & setters & ctors down here
}我正在尝试寻找一种Java 8 "Streamy“方式来获取订单中所有订单行的总数量。获取此计数的“旧”方法如下所示:
int totalQuantity = 0;
for (OrderLine ol : order.getOrderLines()) {
totalQuantity += ol.getQuantity();
}到目前为止我最好的尝试:
Integer totalQuantity = order.getOrderLines().stream().filter(ol -> ol.getQuantity());我知道这是错误的,因为它没有遍历List<OrderLine>并对每一行的数量求和,而且它不会编译,因为filter(...)需要表达式来解析为boolean,而不是int值。
你知道我哪里出问题了吗?
发布于 2019-06-25 23:09:51
您正在寻找创建IntStream和IntStream.sum()的Stream.mapToInt()。您可以尝试这样做:
int totalQuantity = order.getOrderLines().stream()
.mapToInt(OrderLine::getQuantity)
.sum();这将汇总订单中所有订单行的总质量。
https://stackoverflow.com/questions/56757058
复制相似问题