一、继承关系
图来自: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) 。