ArrayList、LinkedList与Vector的区别
ArrayList、LinkedList与Vector算是在面试用比较常见的知识点了。
1.1、ArrayList
ArrayList继承AbstractList抽象父类,实现了List接口(可以进行list操作)、RandomAccess(可随机访问)、Cloneable(可拷贝)、Serializable(可序列化)
- 线程不安全
- 底层实现是数组ArrayList的默认初始化容量是10,每次扩容时候增加原先容量的一半,也就是变为1.5倍
1.2、LinkedList
LinkedList实现了List接口(可以进行list操作)、Deque接口(能够当做双向端队列使用)、Cloneable(可拷贝)、Serializable(可序列化)
- 线程不安全
- 底层实现是双向链表,可以方便的从前/后进行遍历
1.3、Vector
Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口
-
底层是数组,线程安全
-
所有方法都是同步,有性能损失
-
Vector初始化length是10,每次扩容时候增加原先容量的一倍,也就是变成原来的2倍
总的来说:查询多用ArrayList,增删多用LinkedList,多线程使用Vector
ArrayList增删慢不是绝对的,尾部增删是ArrayList快,如果删除的是中间位置的话,还是ArrayList要快。
参考链接: