目录

Collection接口:

List接口

Set接口

AbstractCollection抽象类

AbstractList抽象类

AbstractSet抽象类

Iterator接口

ListIterator接口


首先看一下Collection接口:分为List和Set接口,其中List和Set也分别有各自的实现类(抽象类),而且Collection也有一个抽象类,它实现了Collection接口中的绝大多数方法,避免了编码的重复。

java中collection中的接口 java collection接口_List

Collection接口中有一个iterator方法,用来返回一个Iterator接口,我们使用Iterator迭代器来遍历集合,ListIterator是List接口所特有的,在List接口中用于返回一个ListIterator对象。

Collection接口:

public interface Collection<E> extends Iterable<E>

注意:所有实现Collection的子类都必须有两个构造方法,一个是无参构造,一个是参数为Collection的构造,可以用来转换Collection的类型。

List接口

public interface List<E> extends Collection<E>

List是一个实现了Collection的接口,是一个有序的集合,在API实现上,有处理Collection接口的其他实现。其中第一个元素的索引值是0,与Set集合不同的是List可以存储重复元素。

Set接口

public interface Set<E> extends Collection<E>

同理,Set接口也是一个实现了Collection的接口,不过他是无序的,不允许存储重复元素。它的API与Collection接口是相同的。

AbstractCollection抽象类

public abstract class AbstractCollection<E> implements Collection<E> 
   public abstract Iterator<E> iterator();
    public abstract int size();

该抽象类实现了除iterator和size的方法,作用是方便其他类实现Collection,比如ArrayList,LinkedList,这些类想要实现Collection接口,通过继承AbstractList就已经实现了大部分的方法了。

AbstractList抽象类

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>

AbstractList是一个继承抽象类AbstractCollection并实现List接口的抽象类。它实现了除size和get之外的函数,并且他实现了List接口中的绝大多数方法,方便其他类实现List接口。

另外,和AbstractCollection相比,AbstractList抽象类中,实现了iterator()接口。

AbstractSet抽象类

public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>

AbstractSet是一个继承了抽象类AbstractCollection并实现了Set接口的抽象类。由于Set接口的API与Collection接口的API一样,所以它实现了Set接口中的绝大部分方法,方便其他类继承List接口

Iterator接口

public interface Iterator<E>

Iterator是集合的迭代器,用于遍历集合中的元素。Iterator接口提供的API包括:

boolean hasNext();
E next();
default void remove();
default void remove();

注意:当Iterator遍历Collection集合的时候,会有一个fail-fast机制,即当某一个线程A通过Iterator去遍历某一个集合的内容的时候,如果集合中的内容被其他线程改变了,那么线程A访问集合的时候就会发生ConcurrentModificationException异常,产生fail-fast事件。

ListIterator接口

public interface ListIterator<E> extends Iterator<E> 

ListIterator是一个继承于Iterator接口的接口,是一个队列迭代器,专门用于遍历List,可以用于向前或者向后遍历,相比于Iterator接口,它新增了以下几种方法:

abstract void add(E object)
abstract boolean hasPrevious()
abstract int nextIndex()
abstract E previous()
abstract int previousIndex()
abstract void set(E object)