gpt4 book ai didi

java - 更新 List 中的对象仅影响特定字段。 (合并)
转载 作者:行者123 更新时间:2023-12-01 09:53:14 25 4
gpt4 key购买 nike

我有一个对象列表:

@Getter
@Setter
class Cat {
int id;
int legs;
int head;
}

List<Cat> catsLegs = new ArrayList<>();

我用一些数据填充此列表:

for (int i = 0; i < 10; i++) {
Cat cat = new Cat();
cat.setId(i);
cat.setLegs(i + i);
cats.add(cat);
}

然后我还有另一个列表

List<Cat> catsHeads = new ArrayList<>();

我用一些数据填充此列表:

for (int i = 0; i < 10; i++) {
Cat cat = new Cat();
cat.setId(i);
cat.setHead(i*i);
cats.add(cat);
}

然后我想合并这两个列表,如果 id 相等,则 Cats 相等。

@Override
public boolean equals(Object o) {
if (!(o instanceof Cat)) {
return false;
}

Cat that = (Cat) o;
return this.id.equals(that.id);
}

虽然字段多于3个,但这是一个基本原则。

非常感谢。

最佳答案

  1. 把你的猫放进 Map<Integer, Cat>
  2. 获取结果 Map 的值
  3. 如果您确实需要List根据 Map 的值创建一个新列表

以下是如何合并列表,因为您希望能够覆盖:

Map<Integer, Cat> map = new HashMap<>();
for (Cat cat : catsLegs) {
map.put(cat.getId(), cat);
}
for (Cat cat : catsHeads) {
map.put(cat.getId(), cat);
}
Collection<Cat> cats = map.values();
// If you really need a List, you create a new one as next
List<Cat> catsList = new ArrayList<>(cats);

关于java - 更新 List<Object> 中的对象仅影响特定字段。 (合并),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37455889/

25 4 0