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;
}
这看起来像是 Set
的 removeAll 的实现。
iterator
没有迭代传递给方法的 Collection
。它正在迭代调用该方法的 Set
。
set1.removeAll(collection2);
您正在遍历 set1
的元素并在从 Set
.
中删除之前检查每个元素是否属于 collection2
该代码段来自实现 Collection
的 class。当 Collection
c
还包含 equals
.[= 项目时,该方法仅从本地 class 实例(通过本地 iterator()
)删除项目15=]
你能帮我理解这段代码吗?我不明白为什么这个函数必须在删除之前检查集合是否包含该元素。由于迭代器是从集合中来的,迭代器返回的所有元素肯定在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;
}
这看起来像是 Set
的 removeAll 的实现。
iterator
没有迭代传递给方法的 Collection
。它正在迭代调用该方法的 Set
。
set1.removeAll(collection2);
您正在遍历 set1
的元素并在从 Set
.
collection2
该代码段来自实现 Collection
的 class。当 Collection
c
还包含 equals
.[= 项目时,该方法仅从本地 class 实例(通过本地 iterator()
)删除项目15=]