目录
1.实现接口
ArrayList:实现自List、RandomAccess、Cloneable、Serializable,具有支持快速随机访问、克隆及序列化功能
LinkedList:实现自List、Deque、Cloneable、Serializable,具有克隆及序列化功能
Vector:同ArrayList
2.底层实现原理
ArrayList:基于动态数组实现
LinkedList:基于双向链表实现
Vector:同ArrayList
3.扩容机制
ArrayList:newCapacity = oldCapacity + (oldCapacity >> 1);底层为1.5倍扩容
LinkedList:底层链表,无需扩容
Vector:newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity);可指定扩容因子,默认2倍扩容
4.线程安全
ArrayList:非线程安全
LinkedList:非线程安全
Vector:线程安全,内部方法被synchronized修饰
5.增删改查时间复杂度
ArrayList:
add:直接添加元素,时间复杂度O(1),添加到指定位置,时间复杂度O(n),因还需移动其余元素位置
remove:删除指定索引位置的元素,时间复杂度为O(n),因还需移动其余元素位置
set:修改指定索引位置的元素,时间复杂度O(1)
get:获取指定索引位置的元素,时间复杂度为O(1)
LinkedList:
add:直接添加元素,时间复杂度O(1),添加到指定位置,查询时间复杂度O(n),插入时间复杂度O(1)
remove:删除指定的元素,查询时间复杂度O(n),删除时间复杂度O(1)
set:修改指定位置的元素,查询时间复杂度O(n),修改时间复杂度O(1)
get:获取指定位置的元素,时间复杂度O(n)
Vector:同ArrayList