我有以下课程:
class Money { CurrencyUnit currencyUnit; BigDecimal amount; }
在我的应用程序中,我得到一些随机的Money对象列表:
currencyUnit | amount --------------------- EUR | 5.1 EUR | 0 USD | 1.09 EUR | 42 USD | 3
现在我想使用Java 8 Stream API创建以下结果(只需为每个货币单位的金额调用BigDecimal :: add):
currencyUnit | amount --------------------- EUR | 47.1 USD | 4.09
我已经知道/做了什么:
Stream<Money> moneyStream = moneyList.stream();
它已经结束了.我知道我可以使用收集器生成Map< CurrencyUnit,List< Money>>:
moneyStream.collect(Collectors.groupingBy(m -> m.getCurrencyUnit());
但是,我仍然必须通过所有键值对并总结数量.
什么是正确的(也可能是最简单的方法)呢?它不可能那么复杂吧?