Java的列表(List)是非常常用的数据类型,List是有序的Collection,Java List一共有三个实现类:分别是ArrayList,Vector和LinkedList。
ArrayList
ArrayList是最常用的List实现类,内部是通过数组实现的,它允许元素进行随机访问,数组的缺点是每个元素间不能有间隙,当数组的大小不能满足需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。
当从ArrayList的中间位置插入和删除元素时,需要对数组进行复制,移动代价比较高,它适合随机查找和遍历,不适合插入和删除。
Vector
Vector和ArrayList一样,也是通过数组实现,不同的是它支持线程同步,某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但是实现同步需要更高的花费,因此,访问它比访问ArrayList慢。
LinkList
LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢,另外,它还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,另外可以当作堆,队列和双向队列使用。