Java 8 流 - 合并共享相同 Id 的对象集合
2022-09-03 09:21:10
我有一张发票:
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 流执行此操作?
编辑:由于我的发票类是可变的,修改它们不是问题,我选择了Eugene的解决方案
Collection<Invoice> invoices = list.collect(Collectors.toMap(Invoice::getMonth, Function.identity(), (left, right) -> {
left.setAmount(left.getAmount().add(right.getAmount()));
return left;
})).values();