List<E>是Collection<E>接口的子接口。
让我们学习一波常用的List<E>接口的实现类吧,你都知道哪些?
今天我们学习四个:ArrayList、LinkedList、Stack、CopyOnWriteArrayList
在学之前,看看List的特点吧!
List接口:
List是有序的Collection,使用此接口可以精确的控制每个元素插入的位置,类似于数组,用户可以使用索引来访问List中的元素。和set不同,元素可以重复。
List相比Collection:
- List提供了一种特殊的iterator遍历器,叫做ListIterator。这种遍历器允许遍历时插入,替换、删除、双向访问。并且还有一个重载方法允许从一个指定位置开始遍历。
- List在原来的Collection的基础上,List是一个可以指定索引,有序的容器。
ArrayList(数组):
ArrayList实现了可变大小的数组,它允许所有的元素,包括null。ArrayList没有同步。
ArrayList线程不安全,内部不是原子操作。
Vector:
vector非常类似ArrayList,但是Vector是同步的。当一个线程正在迭代的时候,另一个线程改变Vector状态,会抛异常。
LinkedList(双向链表):
LinkedList实现了List接口,允许null元素,此外LinkedList