List<E>
类结构
继承接口
- Collection<E>
实现
- AbstractList<E>
- AbstractSequentialList<E>
- ArrayList<E>
- LinkedList<E>
- Vector<E>
- LinkedList<E>
- CopyOnWriteArrayList<E>
接口概述
- 可搜索元素的有序集合;可通过索引操作
- 允许重复元素
- 提供了四种对于元素进行索引访问的方法
- 部分实现类通过索引访问性能差
- List接口提供了一个特殊迭代器ListIterator
- List接口提供了两种方法高效的插入删除元素
- 部分实现可能对包含的元素由限制(比如null和类型限制)
- 该接口是Java Collections Framework的成员
接口方法
boolean addAll(int index, Collection<? extends E> c)
E get(int index)
E set(int index, E element)
void add(int index, E element)
E remove(int index)
int indexOf(Object o)
int lastIndexOf(Object o)
ListIterator<E> listIterator()
ListIterator<E> listIterator(int index)
List<E> subList(int fromIndex, int toIndex)
默认方法
default void replaceAll(UnaryOperator<E> operator)
default void sort(Comparator<? super E> c)
default Spliterator<E> spliterator()
继承的
int size()
boolean isEmpty()
boolean contains(Object o)
Iterator<E> iterator()
Object[] toArray()
<T> T[] toArray(T[] a)
boolean add(E e)
boolean remove(Object o)
boolean containsAll(Collection<?> c)
boolean addAll(Collection<? extends E> c)
boolean removeAll(Collection<?> c)
boolean retainAll(Collection<?> c)
void clear()
boolean equals(Object o)
int hashCode()
AbstractList
此类提供List接口的骨架实现;
以最大限度地减少实现由“随机访问”数据存储(例如数组)支持的此接口所需的工作量
对于顺序访问数据(例如链表),应优先使用AbstractSequentialList而不是此类
继承自抽象类AbstractCollection<E>
已实现的父类抽象方法
public abstract Iterator<E> iterator()
未实现的父类抽象方法
public abstract int size()
自身提供的抽象方法
abstract public E get(int index)
此抽象类实现和提供了两个迭代器: Iterators 和 ListIterator
private class Itr implements Iterator<E>
Iterators实现
private class ListItr extends Itr implements ListIterator<E>
ListIterator实现
AbstractSequentialList
此类提供了List接口的骨架实现,以最大限度地减少实现由“顺序访问”数据存储(例如链接列表)支持的此接口所需的工作量
对于随机访问数据(例如数组),应优先使用AbstractList而不是此类
继承自抽象类 AbstractList<E>
此类的方法实现基本都是间接调用以下抽象方法实现
未实现的父类抽象方法
public abstract ListIterator<E> listIterator(int index)