1. 程式人生 > 其它 >JAVA Vector集合原始碼分析

JAVA Vector集合原始碼分析

Vector集合

一、Vecotr的基本介紹

package com.hspedu.list_;

import java.util.Vector;

/**
 * @author DL5O
 * @version 1.0
 */

@SuppressWarnings("all")
public class Vector_ {
    public static void main(String[] args) {
        //這裡是無參構造
        Vector vector = new Vector();
        for (int i = 0; i < 10; i++) {
            vector.add(i);
        }

        vector.add(200);
     
       
    }
}

二、Vector和ArrayList的比較

底層結構 版本 執行緒安全(同步)效率 擴容倍數
ArrayList 可變陣列Object[] jdk1.2 不安全,效率高 如有引數就按照引數的1.5倍擴容
如果是無參
1.第一次擴容10
2.第二次開始按1.5倍
Vector 可變陣列Object[] jdk1.0 安全,效率不高 如果是無參,預設10,滿後,就按2倍擴容
如果指定大小,則每次直接按兩倍進行擴容

第一步:呼叫構造器

第二步:呼叫add方法,確定陣列的修改次數

第三步:呼叫過載了的方法,判斷是否要擴容,不需要擴容則把元素,存入到陣列中,並且當天元素個數+1

  • 幾乎和ArrayList原始碼一致

第四步:如果需要擴容則呼叫grow方法,進行相關操作,確定擴容大小,把舊陣列的元素拷貝到新陣列中,讓elementData指向這個新陣列即可

  • 擴容數量為原來陣列的長度的兩倍
  • 如果是有參構造器
    • 則每次擴容的數量為原來陣列的兩倍長度
  • 且如果設定了capacityIncrement的值,那麼每次都擴容該大小