我有以下Java POJOs:
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(...)
需要表达式解析为一个布尔值,而不是一个整数值。
你有什么想法我哪里出了错吗?