java 集合框架 List相关接口

AbstractCollection

此类提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作。 还有两个抽象方法,具体的迭代器,具体的Collection 的大小

    public abstract Iterator<E> iterator();

    public abstract int size();
   //这里add 是实现方法,而不是已抽象方法的方式呢   
/*
     To implement an unmodifiable collection, the programmer needs only to*
     extend this class and provide implementations
    for the iterator and size methods
  To implement a modifiable collection, the programmer must additionally override this class's add method
   
 为了实现一个不可修改的集合,程序员只需要扩展这个类并提供iteratorsize方法的实现。 ( iterator方法返回的迭代器必须实现hasNextnext )

  要实现可修改的集合,程序员必须另外覆盖此类的add方法(否则将抛出UnsupportedOperationException ),并且由iterator方法返回的迭代器必须另外实现其remove方法。

    */
  public boolean add(E e) {
    throw new UnsupportedOperationException();
    } 

List 

有序的 collection(也称为序列)。定义了一些针对List的方法

    
    boolean addAll(int var1, Collection<? extends E> var2);
 
    E get(int var1);

    E set(int var1, E var2);

    void add(int var1, E var2);

    E remove(int var1);

    int indexOf(Object var1);

    int lastIndexOf(Object var1);

    ListIterator<E> listIterator();

    ListIterator<E> listIterator(int var1);

    List<E> subList(int var1, int var2)
AbstractList
此类提供 List 接口的骨干实现,以最大限度地减少实现“随机访问”数据存储(如数组)支持的该接口所需的工作。和AbstractCollection实现了Collection的骨干实现一样
 //list结构被修改的次数   
protected transient int modCount = 0;
AbstractSequentialList 是 LinkedList的父接口
此类提供的骨干实现List界面最小化以实现此接口由“连续访问”数据存储备份所需的工作(如链接列表)。对于随机访问数据(如数组), AbstractList应优先于此类。
实现的add 方法
public void add(int index, E element) {
        try {
      //  使用
ListIterator 的 add方法
      listIterator(index).add(element); 
    }
catch (NoSuchElementException exc)
  {

  throw new IndexOutOfBoundsException("Index: "+index);
}
}




原文地址:https://www.cnblogs.com/alway-july/p/7588076.html