List继承Collection接口。是可重复的列表集合,允许加入null元素。
主要实现类为ArrayList、LinkedList、Vector、Stack等。
- ArrayList底层实现为数组,是一个数组队列。可以动态的增加容量!当集合中对插入元素数据的速度要求不高,但是要求快速访问元素数据,则使用ArrayList!
- LinkedList是基于链表实现的,是一个双向循环列表。可以被当做堆栈使用!当集合中对访问元素数据速度不做要求不高,但是对插入和删除元素数据速度要求高的情况,则使用LinkedList!
- Vector是基于数组实现的,是一个矢量队列,是线程安全的!
- Stack类:顾名思义就是栈,后进先出原则。
ArrayList类初始化是会构建一个容量为10的列表。当集合中对插入元素数据的速度要求不高,但是要求快速访问元素数据,则使用ArrayList!
LinkedList是基于链表实现的,是一个双向循环列表,所有插入速度很快,适用于插入操作比较多的场景。当集合中对访问元素数据速度不做要求不高,但是对插入和删除元素数据速度要求高的情况,则使用LinkedList!
与ArrayList相比 LinkedList可以把元素从列表开头或者结尾加入
LinkedList有两种方法可以把元素增加到列表中一种是add,另一种是offer因为LinkedList同时实现了List<E>、Deque<E>两个接口,所以同时具有这两种特性。
- 作为List使用时,一般采用add / get方法来 压入/获取对象
- 作为Queue使用时,才会采用 offer/poll/take等方法