如何在Java8 lambda表达式中求和对象的BigDecimal属性?

2022-09-03 17:12:11

让我们举一个简单的现实生活中的例子:

BigDecimal invoiceValue = BigDecimal.ZERO;
for (InvoiceItem i : invoiceItems) {
    invoiceValue = invoiceValue.add(i.getItemValue());
}

如何使用Java8 lambda表达式在一个语句中获取它?


答案 1
invoiceItems.stream()
    .map(Item::getItemValue)
    .reduce(BigDecimal.ZERO, BigDecimal::add)

答案 2

您还可以使用将 BiFunction 作为参数的 reduce 方法:

BigDecimal invoiceValue = invoiceItems.stream().reduce(BigDecimal.ZERO, (bd, item) -> bd.add(item.getItemValue()), BigDecimal::add);

推荐