我有两个Spring page像这样:Page<Account>
和Page<Bank>
。
class Account{
String name;
String bankId;
Bank bank;
}
我想对Page<Account>
中的每个Account
对象进行setBank()
,并根据bankId
从Page<Bank>
中获得相应的对象。
我想我可以使用Java 8流。
到目前为止,我已经试过了:
Map<String, Account> acc = account.stream()
.collect(Collectors.toMap(Account::getBankId, a -> a));
List<Bank> bk = bank.stream()
.map(b-> new Account(b.get(b.getBankId()), bk))
.collect(Collectors.toList());
我想每家银行都会有不止一个账户。所以你需要Map<String, List<Account>>
-accountsByBankId
来代替Map<String, Account>
。它可以通过使用内置收集器Collectors.groupingBy()
来创建。
然后你可以用Collectors.toMap()
将每个银行映射到它的id
Map<String, Bank>
。
最后,将从bankById
映射中检索到的银行对象设置为映射accountsByBankId
中的每个帐户。
Map<String, List<Account>> accountsByBankId = account.stream()
.collect(Collectors.groupingBy(Account::getBankId));
Map<String, Bank> bankById = bank.stream()
.collect(Collectors.toMap(Bank::getBankId, Function.identity()));
accountsByBankId.forEach((bankId, accounts) -> {
accounts.forEach(acc -> acc.setBank(bankById.get(bankId)));
});