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):

 

 

   總結:

    根據索引賦值時,首先進行索引的校驗,然后把新值填充到指定索引的位置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM