让我们来看一个简单的现实生活例子:
BigDecimal invoiceValue = BigDecimal.ZERO;
for (InvoiceItem i : invoiceItems) {
invoiceValue = invoiceValue.add(i.getItemValue());
}
如何使用Java8 lambda表达式在一个语句中获取它?
答案 0 :(得分:25)
invoiceItems.stream()
.map(Item::getItemValue)
.reduce(BigDecimal.ZERO, BigDecimal::add)
答案 1 :(得分:4)
您还可以使用将BiFunction作为参数的reduce方法:
BigDecimal invoiceValue = invoiceItems.stream().reduce(BigDecimal.ZERO, (bd, item) -> bd.add(item.getItemValue()), BigDecimal::add);