如何从 Java 8 中的对象列表中获取两个属性的乘积

How to get the product of two properties from a list of objects in Java 8

我有一个包含价格和数量的物品清单。我希望获得总和,即对象列表中所有(产品价格 * 产品数量)的总和。 Java 8 中最好的方法是什么?

我可以通过 list..stream().map(Product::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add)); 流式传输列表获得所有产品价格的总和,但我不确定如何获得价格和数量的乘积。

map计算乘积,然后用reduce求和:

list.stream()
    .map(p -> p.getPrice().multiply(p.getQty()))
    .reduce(BigDecimal.ZERO, BigDecimal::add);