removeAll 的实现是使用equals方法进行比较,
代码如下:
public booleanremoveAll(Collection c) {
Objects.requireNonNull(c);
booleanmodified =false;
Iterator it = iterator();
while(it.hasNext()) {
if(c.contains(it.next())) {
it.remove();
modified =true;
}
}
returnmodified;
}
使用情景:我们经常对对象集合进行操作,一般从数据库中取出的封装对象会包含创建时间、更新时间等,如果此时使用removeAll则会因为时间比较返回false,。。。。?
解决:重写对象的equals方法,出去时间等不需比较的字段即可。