你有两个班级:
Account: number: String, balance: Long
Transaction: uuid: String, sum: Long, account: Account
这两个类都具有相应名称的所有字段的getter(getNumber(),getSum(),getAccount()等等。)
我需要计算每个帐户的交易总额,但不是按帐户计算,而是按帐户编号
我这样做:
Map<Account, Long> totalSumOfTransByEachAccount =
transactions.stream()
.collect(Collectors.groupingBy(Transaction::getAccount, Collectors.reducing(0, Transaction::getSum, Long::sum)));
但我需要使用String键映射 - Account.getNumber()
Map<String, Long> totalSumOfTransByEachAccount =
transactions.stream()
.collect(Collectors. ??????)
任何人都可以帮助我吗?
答案 0 :(得分:4)
另一个变种,我的决定:
Collectors.groupingBy(t -> t.getAccount().getNumber(),
Collectors.reducing(0L, Transaction::getSum, Long::sum))
答案 1 :(得分:2)
你可以这样做:
Map<String, Long> resultSet = transactions.stream()
.collect(Collectors.groupingBy(t -> t.getAccount().getNumber(),
Collectors.summingLong(Transaction::getSum)));