如图:
List
List
是有序的集合,允许使用者控制其插入集合的位置,并能
使用整数索引访问数据
AbstractList
1 | public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> |
AbstractList
实现List
,是一个抽象类。AbstractList
提供了List
的大部分实现,继承AbstractList
,
只强制要求实现get(int index)
和size()
方法,不过AbstractList
中的许多方法都是默认实现,需要覆盖,
例如add(int index,E e)
方法默认抛出异常。
AbstractSequentialList
AbstractSequentialList
提供了AbstractList
的大部分实现,只支持按次序访问。当顺序访问数据(例如使用链表来实现)时,优先使用这个类;
当对于随机访问数据(例如使用数组来实现)时AbstractList
优先使用。
Deque
Deque
是Queue
的子接口,Queue
是一种队列形式,而Deque
则是双向队列,它支持从两个端点方向检索和插入元素,
因此Deque
既可以支持LIFO
(后进先出)形式也可以支持FIFO
(先进先出)形式.Deque
接口是一种比Stack
和Vector
更为丰富的抽象数据形式,
因为它同时实现了以上两者.
ArrayList
ArrayList
是一个数组列表,ArrayList
支持存入null
.注意ArrayList
不是线程同步的,如果要求线程同步,
要使用Vector
注意:ArrayList
适合搜索频繁的场景,不适合频繁的插入和删除的场景。
LinkedList
LinkedList
是链表集合(在Java中所有的链表都是双向链接的)。
LinkedList
适合频繁的插入和删除的场景,不适合搜索频繁的场景
ListIterator
ListIterator
继承Iterator
,它为List
增加Iterator
方法,例如add()