removeAll(Collection c) 为什么要判断元素是否存在于集合中?

Why need to judge the element if or not exsit in a collection in removeAll(Collection c)?

你能帮我理解这段代码吗?我不明白为什么这个函数必须在删除之前检查集合是否包含该元素。由于迭代器是从集合中来的,迭代器返回的所有元素肯定在collection.So中我认为这是浪费时间。非常感谢

   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;
}

这看起来像是 SetremoveAll 的实现。

iterator 没有迭代传递给方法的 Collection。它正在迭代调用该方法的 Set

set1.removeAll(collection2);

您正在遍历 set1 的元素并在从 Set.

中删除之前检查每个元素是否属于 collection2

该代码段来自实现 Collection 的 class。当 Collection c 还包含 equals.[= 项目时,该方法仅从本地 class 实例(通过本地 iterator())删除项目15=]