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方法,出去時間等不需比較的字段即可。