Reputation: 7709
Let's get a simple real life example:
BigDecimal invoiceValue = BigDecimal.ZERO;
for (InvoiceItem i : invoiceItems) {
invoiceValue = invoiceValue.add(i.getItemValue());
}
How to get this in one statement with Java8 lambda expression?
Upvotes: 15
Views: 14240
Reputation: 16067
You could also use the reduce method that takes a BiFunction as parameter:
BigDecimal invoiceValue = invoiceItems.stream().reduce(BigDecimal.ZERO, (bd, item) -> bd.add(item.getItemValue()), BigDecimal::add);
Upvotes: 4
Reputation: 198311
invoiceItems.stream()
.map(Item::getItemValue)
.reduce(BigDecimal.ZERO, BigDecimal::add)
Upvotes: 36