public boolean removeAll(Collection<?> c) {
Objects.requireNonNull(c);
boolean modified = false;
Iterator<?> it = iterator();
while (it.hasNext()) {
if (c.contains(it.next())) {//I don't understand
it.remove();
modified = true;
}
}
return modified;
}
答案 0 :(得分:3)
这看起来像是Set
removeAll的实现。
iterator
没有迭代传递给方法的Collection
。它正在迭代调用该方法的Set
。
set1.removeAll(collection2);
您正在迭代set1
的元素并检查每个元素是否属于collection2
,然后将其从Set
中删除。
答案 1 :(得分:0)
该代码段来自实现Collection
的类。当iterator()
Collection
还包含c
项时,该方法仅从本地类实例中移除项目(通过本地equals
)。