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

时间:2018-11-28 14:49:02

标签: java

我需要以下查询的帮助

我有2个列表。

1)具有以下属性的人员:姓名,年龄,地址,电话。

2)具有属性的帐户:accHolderName,类型,年龄,地址。

如果个人姓名出现在“帐户列表”中,我想设置帐户的个人年龄,地址。

2 个答案:

答案 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; 
    });
});