java.util Collection相关类解读

Collection的超级父接口为Iterable可迭代的,需要实现返回迭代器,那么for(:)语句就能使用了。
Collection提供的方法如下:

java.util Collection相关类解读_第1张图片
Collection方法
说明:
retainAll 方法容易被忽略,我就是其中一个。这个方法告诉我们取交集。
removeAll 可以得到差集
addAll 可以得到并集
那么集合里面的交差并都有了。

直接下级实现类有AbstractCollection,那么看下他的具体实现,取其中一个:

java.util Collection相关类解读_第2张图片
Paste_Image.png

其中具体实现都是使用Iterator it来实现的
再看一个:

java.util Collection相关类解读_第3张图片
Paste_Image.png

这里的迭代器删除,如果改成如下会怎么样

public boolean removeAll(Collection c) {
        Objects.requireNonNull(c);
        boolean modified = false;
        Iterator it = iterator();
        // jdk方法
        while (it.hasNext()) {
            if (c.contains(it.next())) {
                it.remove();
                modified = true;
            }
        }

        // 方法2
        for (Object o : c) {
            if (this.contains(o)) {
                this.remove(o);
            }
        }

        // 方法3
        for (Object o : c) {
            this.remove(o);
        }

        return modified;
 }
说明:
方法2多此一举。jdk方法iterator用的多。
方法3和jdk方法哪个好呢?

你可能感兴趣的:(java.util Collection相关类解读)