我需要以下查询的帮助
我有2个列表。
1)具有以下属性的人员:姓名,年龄,地址,电话。
2)具有属性的帐户:accHolderName,类型,年龄,地址。
如果个人姓名出现在“帐户列表”中,我想设置帐户的个人年龄,地址。
答案 0 :(得分:0)
假设此人的姓名唯一,则可以使用以下代码:
Map<String, Account> accountHolders = new HashMap<>();
for(Account account : accounts) {
accountHolders.put(account.getAccountHolderName(), account);
}
for(Person person : persons) {
if(accountHolders.containsKey(person.getName())) {
person.setAge(accountHolders.get(person.getName()).getAge());
person.setAddress(accountHolders.get(person.getName()).getAddress());
}
}
但是,这并不是最好的方法,因为在实践中,我认为您可以拥有同名的不同人物。
希望有帮助!
答案 1 :(得分:0)
这将使用帐户信息更新“个人”。我不必为测试类创建getter和setter方法。
persons.stream().forEach( p -> {
accounts.stream().filter(a -> a.name.equals(p.name)).findFirst().ifPresent(a -> {
p.address = a.address;
p.age = a.age;
});
});