Java的List是非常有用的数据类型,也是我们编程过程中常用的数据类型。List继承了Collection,是有序的。
List下又分为三个实现类:
- ArrayList
底层通过数组实现,因为数组的特点是可以通过脚标迅速获取元素,因此ArrayList中的数据拥有被快速随机访问的能力。因为数据与数据之间不能有间隔,所以如果对数据进行中间位置的插入或者删除,需要对数组整体进行复制、移动,代价很高。综上它是适合快速查找,不适合插入和删除的数据结构。 - Vector
底层实现上和ArrayList一样,都是使用了数组,区别在于它是线程安全的,同时只能有一个线程执行写操作,因此实现上性能较差。 - LinkedList
底层数据结构采用了链表,因为是链表存储,所以数据动态的插入和删除的成本非常低,但是随机访问时需要遍历,因此时间复杂度比较高。因此它是适合快速的插入和删除,不适合随机访问的数据结构。