使用 Java 流处理包含影响结果的多个字段的列表



Java 8 在这里。我有以下POJO:

@Getter
@Setter
public class Orderline {
private Integer qty;
private BigDecimal price;
private String productName; 
}

我正在寻找一种 Stream-y 的方式来迭代List<Orderlines>并根据它们各自的数量和价格提出subtotal。执行此操作的"旧"(预流(方式如下所示:

List<Orderline> orderlines = order.getOrderlines();
double sub = 0.0;
for (Orderline ol : orderlines) {
sub += ol.getQty() * ol.getPrice();
}
BigDecimal subtotal = BigDecimal.valueOf(sub);

我使用 Streams 实现此目的的最佳尝试是:

BigDecimal subtotal = order.getOrderlines().stream()
.map(Orderline::getPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add);

但是,这并没有考虑它们的数量。有什么想法吗?

您可以使用

map(x->x.getPrice().multiply(BigDecimal.valueOf(x.getQty())))

在你的第二行。

最新更新