Java 在与另一个列表中的特定元素匹配时更新一个列表中的元素

Java 在与另一个列表中的特定元素匹配时更新一个列表中的元素,java,Java,我想在下面的查询中得到帮助 我有两张清单 1) 具有属性的人:姓名、年龄、地址、电话 2) 具有以下属性的帐户:帐户名称、类型、年龄、地址 如果帐户列表中有人员姓名,我想设置帐户中人员的年龄、地址。假设该人员的姓名是唯一的,您可以使用以下代码: Map<String, Account> accountHolders = new HashMap<>(); for(Account account : accounts) { accountHolders.put(acc

我想在下面的查询中得到帮助

我有两张清单

1) 具有属性的人:姓名、年龄、地址、电话

2) 具有以下属性的帐户:帐户名称、类型、年龄、地址


如果帐户列表中有人员姓名,我想设置帐户中人员的年龄、地址。

假设该人员的姓名是唯一的,您可以使用以下代码:

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());
    }
}
Map accountHolders=newhashmap();
用于(账户:账户){
accountholdername.put(account.getAccountHolderName(),account);
}
用于(人:人){
if(accountHolders.containsKey(person.getName())){
person.setAge(accountHolders.get(person.getName()).getAge());
person.setAddress(accountHolders.get(person.getName()).getAddress());
}
}
然而,这不是最好的方法,因为在实践中,我认为你可以有不同的人同名


希望有帮助

这将使用帐户信息更新人员。我没有为我的测试类创建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; 
    });
});

你尝试了什么?我尝试了:person.stream.filter(p->account.filter().anymatch(a->a.getName().equals(p.getName()).collect(collector.tolist()).forEach(p->{account.forEach({a->if(p.getName().equals)(a.getName()){p.setAge(a.getAge());p.setAddress(a.getAddress());})参考此。