如何从Java8中的对象列表中获取两个属性的乘积
我有一个包含价格和数量的物品清单。我希望获得总和,即对象列表中所有(产品价格 * 产品数量)的总和。在 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);