AbstractCollection实现了Collection接口,是一个抽象类,有两个抽象方法:
1:public abstract Iterator<E> iterator();
2:public abstract int size();
Collection接口的其他方法,都有默认的实现;其中:
1:isEmpty()方法调用size()来判断
2:contains()、containsAll()、toArray()方法是通过循环iterator()方法返回的迭代器来查询的;
3:remove()和removeAll()方法是通过iterator()方法返回的迭代器提供的remove()方法来实现的;
4:add()方法默认是不支持的,addAll()方法是多次调用add()方法;
如果想要实现一个不可修改的Collection,只需要继承AbstractCollection并且实现两个抽象方法即可;
如果想要实现可以修改的Collection,还需要重写add()方法和iterator()方法返回的迭代器实现remove()方法;