【发布时间】:2020-04-11 03:37:06
【问题描述】:
我有一组发票:
class Invoice {
int month;
BigDecimal amount
}
我想合并这些发票,所以我每月收到一张发票,金额是本月发票金额的总和。
例如:
invoice 1 : {month:1,amount:1000}
invoice 2 : {month:1,amount:300}
invoice 3 : {month:2,amount:2000}
输出:
invoice 1 : {month:1,amount:1300}
invoice 2 : {month:2,amount:2000}
如何使用 java 8 流做到这一点?
编辑:由于我的 Invoice 类是可变的,修改它们不是问题,我选择了 Eugene 的解决方案
Collection<Invoice> invoices = list.collect(Collectors.toMap(Invoice::getMonth, Function.identity(), (left, right) -> {
left.setAmount(left.getAmount().add(right.getAmount()));
return left;
})).values();
【问题讨论】:
标签: java java-stream