java如何将不同的两个List集合中对象数据合并
时间: 2024-03-08 17:48:59 浏览: 70
要将两个不同的List集合中的对象数据合并,需要注意几点:
1. 对象必须具有相同的类型,否则无法合并。
2. 对象必须实现equals()和hashCode()方法,以便正确地去重和比较。
3. 如果两个对象相同,则只保留一个,以避免重复。
下面是一个示例代码,演示如何将两个不同的List集合中的对象数据合并:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class MergeListDemo {
public static void main(String[] args) {
List<Person> list1 = new ArrayList<>();
list1.add(new Person("Tom", 18));
list1.add(new Person("Lucy", 20));
List<Person> list2 = new ArrayList<>();
list2.add(new Person("Jim", 22));
list2.add(new Person("Lucy", 20));
Set<Person> set = new HashSet<>();
set.addAll(list1);
set.addAll(list2);
List<Person> list3 = new ArrayList<>(set);
System.out.println(list3);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (this == obj) return true;
if (!(obj instanceof Person)) return false;
Person other = (Person) obj;
if (name == null) {
if (other.name != null) return false;
} else if (!name.equals(other.name)) return false;
if (age != other.age) return false;
return true;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + age;
return result;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
```
在上面的示例代码中,我们创建了两个List集合list1和list2,并向每个集合中添加了两个Person类型的对象。然后,我们创建了一个HashSet集合set,将list1和list2中的所有元素添加到set中。由于HashSet会自动去重,所以我们可以确保最终合并后的集合中不会有重复的对象。最后,我们将set中的元素转换为List集合并输出。输出结果为:
```
[Person [name=Lucy, age=20], Person [name=Jim, age=22], Person [name=Tom, age=18]]
```
注意,输出结果中只保留了一个name为Lucy、age为20的对象,这是因为我们在Person类中实现了equals()和hashCode()方法,确保了对象的唯一性。
阅读全文