AbstractCollection
概述
- 版本:jdk 1.7
方法
// 取交集
// A & B = A.retainAll(B)
// 注意:
// 1.此处没有对A进行拷贝,会修改A的集合内容
// 2.返回值不是两个集合存在交集的意思,而是是否进行了修改
// 3.判断是否存在交集,需要对调用 retainAll 后的A判空,非空,即存在交集
public boolean retainAll(Collection<?> c) {
boolean modified = false;
Iterator<E> it = iterator();
while (it.hasNext()) {
// 如果 A 中不含有B 集合的元素,则删除并标记状态为修改
if (!c.contains(it.next())) {
it.remove();
modified = true;
}
}
return modified;
}