Ответ 1
invoiceItems.stream()
.map(Item::getItemValue)
.reduce(BigDecimal.ZERO, BigDecimal::add)
Позвольте получить простой пример реальной жизни:
BigDecimal invoiceValue = BigDecimal.ZERO;
for (InvoiceItem i : invoiceItems) {
invoiceValue = invoiceValue.add(i.getItemValue());
}
Как получить это в одном выражении с выражением лямбда Java8?
invoiceItems.stream()
.map(Item::getItemValue)
.reduce(BigDecimal.ZERO, BigDecimal::add)
Вы также можете использовать метод уменьшения, который принимает параметр BiFunction в качестве параметра:
BigDecimal invoiceValue = invoiceItems.stream().reduce(BigDecimal.ZERO, (bd, item) -> bd.add(item.getItemValue()), BigDecimal::add);