ArrayList
1、ArrayList 是一个数组队列,相当于动态数组,为线程不安全。
2、继承了AbstractList,实现了List,提供了添加、删除、修改、遍历等功能。
3、实现了RandmoAccess接口,提供了随机访问功能。
4、ArrayList通过一个数组去保存数据的,默认容量大小是10,当ArrayList容量不足以容纳全部元素时,ArrayList会重新设置容量:新的容量=“(原始容量x3)/2 + 1”。
LinkedList
1、LinkedList 是一个继承于AbstractSequentialList的双向链表,提供了随机访问功能,顺序访问会非常高效,而随机访问效率比较低。,它也可以被当作堆栈、队列或双端队列进行操作,为线程不安全。
2、实现了List,提供了添加、删除、修改、遍历等功能。
3、实现Deque接口,即能将LinkedList当作双端队列使用。
4、索引的原理是比较“location”和“双向链表长度的1/2”;若前者大,则从链表头开始往后查找,直到location位置;否则,从链表末尾开始先前查找,直到location位置。
Vector
Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。
总结:
ArrayList 是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。
LinkedList 是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率高。
Vector 是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。
网友评论