问题遇到的现象和发生背景
List<实体类>
List1 里面的某个元素的 id name 的值如果与list2 里面的某个元素的id name 的值都相同,则List1不要此元素
List<实体类>
List1 里面的某个元素的 id name 的值如果与list2 里面的某个元素的id name 的值都相同,则List1不要此元素
Tips:如果需要删除或添加数据,不要使用Arrays.asList()方法生成List,此方法返回的ArrayList是Arrays它自己的内部类,没有实现add()和remove()方法,删除或添加数据时会报错。
循环遍历法
while (iterator1.hasNext()) {
User user = iterator1.next();
for (User u : list2) {
if (u.getId() == user.getId() && Objects.equals(u.getName(), user.getName())) {
iterator1.remove();
break;
}
}
}
重写User类的equals方法
重写之后,相同id和name的User会当作是同一个对象。
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
User user = (User) o;
return id == user.id && Objects.equals(name, user.name);
}
然后再调用removeAll()方法,去除相同对象。
list1.removeAll(list2);