ArrayList、LinkedList与Vector的区别

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要快。

参考链接:

猜你喜欢

转载自www.cnblogs.com/shaoyu/p/12035153.html