ArrayList LinkedList 和Vector 的区别
相同点:
都是java.util.List接口的实现类
都是有序、可排序、可重复的集合
都支持迭代器操作
区别:
1、实现接口不同
- ArrayList和Vector未实现Queue接口、Deque接口、不支持队列操作
- LinkedList实现了Queue接口和Deque接口,支持队列操作,同时支持栈操作
2、内部实现不同
- ArrayList内部采用数组来存储元素
- Vector内部采用数组来存储
- LinkedList内部采用链表来存储元素
3、线程安全:
- ArrayList非线程安全,适用于单线程环境
- Vector线程安全,适用于多线程环境
- LinkedList非线程安全,适用于单线程环境
4、扩容方式不同
- ArrayList内部采用倍数增长的方式扩容
- Vector内部采用增加固定增量的方式扩容
- LinkedList内部采用链表实现,必须要扩容
5、增删效率不同
- ArrayList和Vector内部采用数组实现,因此增删慢
- LinkedList内部采用链表实现,因此增删快
6、是否支持随机访问
- ArrayList和Vector内部采用数组实现,因此随机访问效率较高
- LinkedList内部采用链表实现,因此随机访问效率较低