Java | 源码知识点之Vector对比ArrayList

有人说Vector与 ArrayList除了一些同步的区别外,其他都一样,那我就来对比阅读下,看下究竟是不是只有这点区别:

  1. 底层都是通过Object[] ,即一个对象数组来实现的。
  2. 构造函数:
    a. 都有无参构造函数、确定初始大小的构造函数和传入集合的构造函数:Constructor(initialCapacity)Construtor()Constructor(Collection)
    b. Vector有一个构造函数Vector(initialCapacity, capacityIncrement),说明Vector是可以指定扩容大小的,那么在他的Vector(initialCapacity)中,这个capacityIncrement=0,这种情况下,Vector是2倍扩容的,而ArrayList则是1.5倍扩容。
  3. grow方法:除了扩容大小不同(Vector为2,ArrayList为1.5)外,完全一样。
  4. 添加元素:
    a. 在末尾添加:ArrayList和Vector操作一样,每添加一个元素,扩容,然后copy数组(开销大);
    b. 在中间插:操作一样,首先检查范围是否越界,然后扩容,在将要插入位置后的元素全部往后移,再将该位置插入相应的元素。
  5. 删除元素:不用检查容量,直接将要删除元素的位置处之后的元素前移,然后将最后一个位置元素置为null;需要注意的是,两个类都有两种remove方式,一种是利用index删除,这种方式需要边界检查,返回删除的;另一种是remove(Object),这种方式不用检查越界,且不返回删除的值;

VectorArrayList代码思路基本上是一样的,可能个别函数的实现会有些许差异,以上是我在对比阅读时注意的一些内容,其他如有遗漏,欢迎补充。

PEACE OUT

你可能感兴趣的:(Java | 源码知识点之Vector对比ArrayList)