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