DESKTOP-FKKMCTR_20200910-张森
所遇问题
简述 ArrayList 、Vector 、LinkedList 的区别
相同
- 都是 java.util.List 接口的实现类
- 都是有序、可排序、可重复的集合
- 都支持迭代器操作
区别
-
实现接口不同
- ArrayList 和 Vector 未实现 Queue 接口、Deque 接口,不支持队列操作
- LinkedList 实现了 Queue 接口 和 Deque 接口,支持队列操作,同时支持栈操作
- 自己翻看API查看 Queue 、Deque 接口中声明的方法
- 自己翻看API查看 LinkedList 中对栈操作的支持
-
内部实现不同
- ArrayList 内部采用数组来存储元素
- Vector 内部采用数组来存储元素
- LinkedList 内部采用 链表 来存储元素
-
线程安全
- ArrayList 非线程安全,适用于单线程环境
- Vector 线程安全,适用于多线程环境
- LinkedList 非线程安全,适用于单线程环境
-
扩容方式不同
- ArrayList 内部采用
倍数增长
的方式扩容 - Vector 内部采用
增加固定增量
的方式扩容 - LinkedList 内部采用链表实现,不需要扩容
- ArrayList 内部采用
-
增删效率不同
- ArrayList 和 Vector 内部采用数组实现,因此增删慢 (想想为什么?)
- LinkedList 内部采用链表实现,因此增删块 (想想为什么?)
-
是否支持随机访问
- ArrayList 和 Vector 内部采用数组实现,因此随机访问效率较高
- 因为数组可以直接通过下标进行访问
- LinkedList 内部采用链表实现,因此随机访问效率较低
- 列表则是每次都从开头进行查找,一直到找到索引位置,(或者通过键值),所以相对较慢
吐槽
今天早上窗户开了,很冷。
近期评论