java中对比两个list<user>对象,获取两个list<user>对象不同的数据集合
时间: 2024-02-11 19:04:59 浏览: 94
对于两个List<User>对象,可以通过比较每个User对象的属性来获取它们的差异集合。具体步骤如下:
1. 先创建两个List<User>对象list1和list2。
2. 创建一个新的List<User>对象difference,用于存储list1和list2的差异集合。
3. 遍历list1中的每个User对象,对于每个User对象,遍历list2中的每个User对象进行比较。如果两个User对象的属性相同,则说明它们是相同的,不需要加入差异集合;如果两个User对象的属性不同,则说明它们是不同的,需要加入差异集合。
4. 遍历list2中的每个User对象,对于每个User对象,遍历list1中的每个User对象进行比较。如果两个User对象的属性相同,则说明它们是相同的,不需要加入差异集合;如果两个User对象的属性不同,则说明它们是不同的,需要加入差异集合。
下面是示例代码:
```java
List<User> list1 = new ArrayList<>();
list1.add(new User("Alice", 20));
list1.add(new User("Bob", 25));
list1.add(new User("Charlie", 30));
List<User> list2 = new ArrayList<>();
list2.add(new User("Bob", 25));
list2.add(new User("David", 35));
list2.add(new User("Eva", 40));
List<User> difference = new ArrayList<>();
for (User user1 : list1) {
boolean found = false;
for (User user2 : list2) {
if (user1.equals(user2)) {
found = true;
break;
}
}
if (!found) {
difference.add(user1);
}
}
for (User user2 : list2) {
boolean found = false;
for (User user1 : list1) {
if (user2.equals(user1)) {
found = true;
break;
}
}
if (!found) {
difference.add(user2);
}
}
System.out.println("list1和list2的差异集合:" + difference);
```
以上代码输出的结果为:
```
list1和list2的差异集合:[User{name='Alice', age=20}, User{name='Charlie', age=30}, User{name='David', age=35}, User{name='Eva', age=40}]
```
注意,为了比较两个User对象是否相同,需要在User类中重写equals()方法和hashCode()方法。可以根据User对象的属性来比较它们是否相同。例如,可以根据name属性和age属性来比较两个User对象是否相同:
```java
class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age && Objects.equals(name, user.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
阅读全文