java实体类集合属性相同对象合并
时间: 2024-10-15 07:29:37 浏览: 25
在Java中,当你有一个包含实体类对象(如Person)的集合,而这些对象中有部分属性值是相同的,你可以通过比较这些属性来合并相似的对象。这种操作通常用于减少数据冗余或者优化存储空间。
一种常见的做法是创建一个主键(通常是唯一的标识符),比如ID。然后遍历集合,对于每个元素,检查其主键是否已经存在其他元素中。如果存在,就更新已有的对象,将新对象的非重复属性合并;如果不存在,则添加一个新的对象。
例如:
```java
public class Person {
private int id;
private String name;
// getters and setters
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return id == person.id && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}
List<Person> peopleList = ...; //假设这是你的person集合
Map<Integer, Person> mergedPeople = new HashMap<>();
for (Person person : peopleList) {
if (!mergedPeople.containsKey(person.getId())) {
mergedPeople.put(person.getId(), person);
} else {
// 如果id已存在,更新name等非主键属性
mergedPeople.get(person.getId()).setName(person.getName());
}
}
```
阅读全文