AbstractSet.java的代码中发现这句
public boolean removeAll(Collection<?> c) {
boolean modified = false;
if (size() > c.size()) {
for (Iterator<?> i = c.iterator(); i.hasNext(); )
modified |= remove(i.next());//位或操作,只要又一次remove返回true,结果即为true
} else {
for (Iterator<?> i = iterator(); i.hasNext(); ) {
if (c.contains(i.next())) {
i.remove();
modified = true;
}
}
}
return modified;
}
PS:这个代码还有点可以借鉴的地方是,循环前比较两个集合的长度大小,递归小的那个集合
没有评论:
发表评论