如何在Java 8中基于Id字段映射来自一个页面的Object字段和来自另一个页面的Object &



我有两个Spring page像这样:Page<Account>Page<Bank>

class Account{
String name;
String bankId;
Bank bank;
}

我想对Page<Account>中的每个Account对象进行setBank(),并根据bankIdPage<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()将每个银行映射到它的idMap<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)));
});

相关内容

  • 没有找到相关文章