• Java 之 Vector 集合


    一、构造方法

    Vector():构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。 
    Vector(int initialCapacity) :使用指定的初始容量和等于零的容量增量构造一个空向量
    Vector(int initialCapacity, int capacityIncrement):使用指定的初始容量和容量增量构造一个空的向量
    Vector(Collection<? extends E> c) :构造一个包含指定 collection 中的元素的向量,这些元素按其 collection 的迭代器返回元素的顺序排列。
    

      源码跟踪:

       1、先看无参的构造方法:

        2、有一个 int 参数的构造方法

     

      3、有两个 int参数的构造方法

     

      总结:

      从上面的三个方法中可以看出,如果调用无参的构造方法,默认初始化的长度为10的数组,默认增量为0。

         当使用一个参数时,可以为其指定初始化容量。

      当使用两个参数的方法时,不仅仅可以指定初始化容量,还可以指定增量。

    二、常用方法

      1、add(E e) 方法

        源码跟踪(JDK1.8):

     

     

     

        源码跟踪(JDK1.9):

     

     

     

     

        总结

        当调用 add(E e) 方法时,会调用第二张图的 add 方法,其中会检验长度是否够,如果不够,会调用图三的 grow 方法,grow 方法中调用了图四的 newCapacity 扩容方法,如果你手动指定了capacityIncrement的值,那么可以按照你指定增量进行扩容。如果没有默认值为0,会扩容为原来的2倍。

      2、add(int index,Object e)方法

        源码跟踪(JDK1.8)

     

     

       源码跟踪(JDK1.9):

       总结:

         可以看出,当调用add(index,Object) 方法后,实际上是调用的 insert 方法,首先进行了index的校验,然后是数组长度的校验,然后进行数据的插入。

      3、remove(int index) 方法

        源码跟踪(JDK1.8):

       总结:根据索引删除一个元素,会先进行索引的校验,然后判断需要挪动的元素的个数;如果为0个,不需要执行操作,节省时间,如果不为0,再移动数组。

      4、remove(Object) 方法

        源码跟踪(JDK1.8):

     

     

       总结

        当根据一个元素值删除时,会先去查找该值所在的索引,如果能够找到,在根据索引进行删除。

      5、indexOf(Object obj) 与 indexOf(Object obj, int index) 方法

        源码跟踪(JDK1.8):

     

     

       总结

        查询元素位置时,对元素进行分情况讨论,① 是null;② 不是 null。然后进行查找,第二个参数为指定开始查找的索引,如果不指定,默认从0开始查找。

      6、set(int index, Object obj) 方法

        源码跟踪(JDK1.8):

     

     

       总结:

        根据索引赋值时,首先进行索引的校验,然后把新值填充到指定索引的位置。

  • 相关阅读:
    如何在SpringMVC中使用REST风格的url
    c#实现的udt
    数据库查询服务化-缓存和分页
    c#常用数据库封装再次升级
    c#数据库连接池Hikari重构升级
    c# 常用数据库封装
    聊聊数据存储查询
    c#分析SQL语句
    c# 分析SQL语句中的表操作
    c#最近博文结尾
  • 原文地址:https://www.cnblogs.com/niujifei/p/12073808.html
Copyright © 2020-2023  润新知