DESKTOP-D9IGLU5_20200911-赵继豪
1、问题
ArrayList 、Vector 、LinkedList 的区别
相同
- 都是 java.util.List 接口的实现类
 - 都是有序、可排序、可重复的集合
 - 都支持迭代器操作
 
区别
- 
实现接口不同
 - 
- ArrayList 和 Vector 未实现 Queue 接口、Deque 接口,不支持队列操作
 
- LinkedList 实现了 Queue 接口 和 Deque 接口,支持队列操作,同时支持栈操作
 
 - 
 - 
内部实现不同
 - 
- ArrayList 内部采用数组来存储元素
 
- Vector 内部采用数组来存储元素
 - LinkedList 内部采用 链表 来存储元素
 
 - 
线程安全
 - 
- ArrayList 非线程安全,适用于单线程环境
 
- Vector 线程安全,适用于多线程环境
 - LinkedList 非线程安全,适用于单线程环境
 
 - 
扩容方式不同
 - 
- ArrayList 内部采用 倍数增长 的方式扩容(oldCapacity + oldCapacity >> 1)
 
- Vector 内部采用 增加固定增量 的方式扩容(oldCapacity + capacityIncrement)
 - LinkedList 内部采用链表实现,不需要扩容
 
 - 
增删效率不同
 - 
- ArrayList 和 Vector 内部采用数组实现,因此增删慢
 
- LinkedList 内部采用链表实现,因此增删块 (想想为什么?)
 
 - 
是否支持随机访问
 - 
- ArrayList 和 Vector 内部采用数组实现,因此随机访问效率较高 (想想为什么?)
 
- LinkedList 内部采用链表实现,因此随机访问效率较低
 
 
2、吐槽
没啥吐槽的
					点赞
				
    

