DESKTOP-7J91214_20200909-张军强
1.总结
ArrayList 、Vector 、LinkedList 的区别
相同
- 都是 java.util.List 接口的实现类
- 都是有序、可排序、可重复的集合
- 都支持迭代器操作(Itorable类)
区别
- 实现接口不同
- ArrayList 和 Vector 未实现 Queue 接口、Deque 接口,不支持队列操作
- LinkedList 实现了 Queue 接口 和 Deque 接口,支持队列操作,同时支持栈操作
- 内部实现不同
- ArrayList 内部采用数组来存储元素
- Vector 内部采用数组来存储元素
- LinkedList 内部采用 链表 来存储元素
- 线程安全
- ArrayList 非线程安全的,适用于单线程环境
- Vector 线程安全的,适用于多线程环境
- LinkedList 非线程安全,适用于单线程环境
- 扩容方式不同
- ArrayList 初始容量 :10,内部采用
倍数增长
的方式扩容:oldCapacity + oldCapacity >> 1( 近似1.5倍) - Vector 初始容量 :10,内部采用
增加固定增量
的方式扩容:oldCapacity + capacityIncrement - capacityIncrement > 0 扩容,即增大
- capacityIncrement < 0 缩容 ,即减小
- LinkedList 内部采用链表实现,不需要扩容
- ArrayList 初始容量 :10,内部采用
- 增删效率不同
- ArrayList 和 Vector 内部采用数组实现,因此增删慢
- LinkedList 内部采用链表实现,因此增删块
2.吐槽
今天学的Map类实现还是有点难,有空得多琢磨一下。
点赞