gpt4 book ai didi

java - 从另一个列表更新列表中的对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:55 25 4
gpt4 key购买 nike

我有一个用户列表

List<User> usrList1 = new ArrayList<User>();
userList.add(new User("usr1",11,""));
userList.add(new User("usr2",22,""));
userList.add(new User("usr3",33,""));

另一个用户列表包含

List<User> usrList2 = new ArrayList<User>();
userList2.add(new User("",11,"add1"));
userList2.add(new User("",22,"add2"));

现在考虑到性能,如何合并这两个列表并使用id获取单个用户列表。考虑 userList1userList2 的大小约为 50。

List<User> usrList = new ArrayList<User>();
userList.add(new User("usr1",11,"add1"));
userList.add(new User("usr2",22,"add2"));
userList.add(new User("usr3",33,""));

最佳答案

对于一个小列表来说,这非常简单,无需考虑性能问题并假设附加 NameData 字段的合并策略:

  • list1复制(浅)到新列表合并
  • 迭代list2
    • 对于 merged 中的每个项目,检查 list2 中的项目是否已存在
    • 如果该项目存在,只需更新其字段
    • 如果不存在,将其追加到merged的末尾

代码:

public static List<User> Merge(List<User> list1, List<User> list2) {
List<User> merged = new ArrayList<User>(list1);
for (User user : list2) {
boolean found = false;
for (User u : merged) {
if (u.Id == user.Id) {
found = true;
u.Name += user.Name;
u.Data += user.Data;
break;
}
}
if (!found) {
merged.add(user);
}
}
return merged;
}

关于java - 从另一个列表更新列表中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38387380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com