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

如何从Java8中的对象列表中获取两个属性的乘积,java,Java,我有一张物品清单,上面有价格和数量。我希望得到总和,即对象列表中所有(产品价格*产品数量)的总和。在Java8中实现这一点的最佳方法是什么 我可以通过使用list..stream().map(product::getPrice).reduce(BigDecimal.ZERO,BigDecimal::add)对列表进行流式处理来获得所有产品价格的总和但我不确定的是如何得到价格和数量的乘积。使用map计算乘积,然后使用reduce得到总和: list.stream() .map(p->p.getPr

我有一张物品清单,上面有价格和数量。我希望得到总和,即对象列表中所有(产品价格*产品数量)的总和。在Java8中实现这一点的最佳方法是什么


我可以通过使用
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);

使用
map
计算乘积,然后使用
reduce
得到总和:

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

请提供一个完整、简单的代码示例1:创建方法
getTotal
返回产品(价格*数量),并在上述代码中使用;或者2:使用
p->p.getPrice().multiply(p.getQty())
而不是
Product::getPrice
请提供一个完整的、简化的代码示例1:创建方法
getTotal
返回产品(price*qty),并在上述代码中使用它;或者2:使用
p->p.getPrice().multiply(p.getQty())
而不是
Product::getPrice