美文网首页
Java | 源码知识点之Vector对比ArrayList

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

作者: 脱脂蛋丁 | 来源:发表于2017-10-27 11:49 被阅读0次

    有人说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

          本文链接:https://www.haomeiwen.com/subject/dlyrpxtx.html