两个list<User>取差集java代码
时间: 2023-08-17 08:34:42 浏览: 104
如果我们要对两个List<User>对象进行差集操作,其中的User对象不是Java内置的数据类型,那么我们需要重写User类的equals()和hashCode()方法,以确保对象的比较是正确的。
下面是一个示例代码:
```java
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User)) return false;
User user = (User) o;
return age == user.age &&
Objects.equals(name, user.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
```
在这个示例中,我们重写了User类的equals()和hashCode()方法,以确保对象的比较是正确的。接下来,我们可以使用Java中的Collection的subtract方法来实现两个List<User>对象的差集操作,具体步骤如下:
1. 将两个List<User>对象转化为Set<User>对象,使用HashSet()函数。
2. 对Set<User>对象进行差集操作,使用“-”符号。
3. 将差集结果转化为List<User>对象,使用ArrayList()函数。
下面是一个示例代码:
```java
List<User> list1 = new ArrayList<>();
list1.add(new User("张三", 20));
list1.add(new User("李四", 22));
list1.add(new User("王五", 25));
List<User> list2 = new ArrayList<>();
list2.add(new User("李四", 22));
list2.add(new User("王五", 25));
list2.add(new User("赵六", 30));
Set<User> set1 = new HashSet<>(list1);
Set<User> set2 = new HashSet<>(list2);
set1.removeAll(set2);
List<User> diff = new ArrayList<>(set1);
System.out.println(diff);
```
输出结果为:
```
[User{name='张三', age=20}]
```
这表示list1中有,但是list2中没有的元素是User{name='张三', age=20}。
阅读全文