如何在 Java8 lambda 表达式中对对象的 BigDecimal 属性求和?
How to sum BigDecimal properties of objects in Java8 lambda expression?
让我们举一个简单的现实生活中的例子:
BigDecimal invoiceValue = BigDecimal.ZERO;
for (InvoiceItem i : invoiceItems) {
invoiceValue = invoiceValue.add(i.getItemValue());
}
如何使用 Java8 lambda 表达式在一个语句中得到这个?
invoiceItems.stream()
.map(Item::getItemValue)
.reduce(BigDecimal.ZERO, BigDecimal::add)
您还可以使用以 BiFunction 作为参数的 reduce 方法:
BigDecimal invoiceValue = invoiceItems.stream().reduce(BigDecimal.ZERO, (bd, item) -> bd.add(item.getItemValue()), BigDecimal::add);
让我们举一个简单的现实生活中的例子:
BigDecimal invoiceValue = BigDecimal.ZERO;
for (InvoiceItem i : invoiceItems) {
invoiceValue = invoiceValue.add(i.getItemValue());
}
如何使用 Java8 lambda 表达式在一个语句中得到这个?
invoiceItems.stream()
.map(Item::getItemValue)
.reduce(BigDecimal.ZERO, BigDecimal::add)
您还可以使用以 BiFunction 作为参数的 reduce 方法:
BigDecimal invoiceValue = invoiceItems.stream().reduce(BigDecimal.ZERO, (bd, item) -> bd.add(item.getItemValue()), BigDecimal::add);