ArrayList、Vector、LinkedList 的区别

一、继承关系

图来自:https://blog.csdn.net/sinat_36265222/article/details/86481715

二、底层数据结构

ArrayList:数组。

Vector:数组。

LinkedList:双向链表 (JDK1.6 之前为循环链表,JDK1.7 取消了循环)。

三、并发安全

Vector:线程安全,即它大部分的方法都包含关键字 synchronized,但是 Vector 的效率没有 ArrayList 和 LinkedList 高。

ArrayList:非线程安全。

LinkedList:非线程安全。

四、数据增长

Vector:缺省的情况下,增长为原数组长度的一倍。说到缺省,说明他其实是可以自主设置初始化大小的。

ArrayList:自动增长原数组的50%。

五、增删改查的效率

增加删除元素的效率:ArrayList 和 Vector 的时间复杂度:O(n);LinkedList 的时间复杂度:O(1) 。

查询元素的效率:ArrayList 和 Vector 的时间复杂度:O(1);LinkedList 的时间复杂度:O(n) 。

原文地址:https://www.cnblogs.com/xiekun96/p/14220182.html