【Java集合源碼剖析1.3】Vector源碼剖析(API23)

Vector共有4個構(gòu)造函數(shù)
// 默認構(gòu)造函數(shù)
Vector()

// capacity是Vector的默認容量大小吆倦。當由于增加數(shù)據(jù)導致容量增加時,每次容量會增加一倍菱鸥。
Vector(int capacity)

// capacity是Vector的默認容量大小嚷那,capacityIncrement是每次Vector容量增加時的增量值。
Vector(int capacity, int capacityIncrement)

// 創(chuàng)建一個包含collection的Vector
Vector(Collection<? extends E> collection)

先看一下Vector的add()方法 :

    public synchronized boolean add(E e) {
        modCount++;
        ensureCapacityHelper(elementCount + 1);
        elementData[elementCount++] = e;
        return true;
    }

很容易理解羹与, 直接 在elementCount+1個位置插入這個對象。
指定位置插入對象:

    public synchronized void insertElementAt(E obj, int index) {
        modCount++;
        if (index > elementCount) {
            throw new ArrayIndexOutOfBoundsException(index
                                                     + " > " + elementCount);
        }
        ensureCapacityHelper(elementCount + 1);
        System.arraycopy(elementData, index, elementData, index + 1, elementCount - index);
        elementData[index] = obj;
        elementCount++;
    }

和ArrayList的處理方法是一樣的庶灿。將第index個位置往后移一個單位纵搁,然后在第index位置插入對象 。

 public synchronized boolean addAll(Collection<? extends E> c) {
        modCount++;                                   //統(tǒng)計修改次數(shù)累加往踢。
        Object[] a = c.toArray();                       // 集合轉(zhuǎn)為數(shù)組 
        int numNew = a.length;                       // 要添加集合里對象的個數(shù) 腾誉。 
        ensureCapacityHelper(elementCount + numNew);          //擴容
        System.arraycopy(a, 0, elementData, elementCount, numNew);     //追加集合。
        elementCount += numNew;
        return numNew != 0;
    }

看一下移除的方法 峻呕。

   public synchronized void removeElementAt(int index) {
        modCount++;
        if (index >= elementCount) {               //  越界檢查
            throw new ArrayIndexOutOfBoundsException(index + " >= " +
                                                     elementCount);
        }
        else if (index < 0) {
            throw new ArrayIndexOutOfBoundsException(index);
        }
        int j = elementCount - index - 1;
        if (j > 0) {
            System.arraycopy(elementData, index + 1, elementData, index, j);   //從Index 開始利职,前移一個單位 。 
        }
        elementCount--;
        elementData[elementCount] = null;     // 回收瘦癌。 
    }

其它可以自行分析吧猪贪,比較簡單 ,
小結(jié):
1.Vector實現(xiàn)了List<E>, RandomAccess, Cloneable, java.io.Serializable接口讯私。
2.Vector也同樣采用了數(shù)組的儲存方式热押,這一點和ArrayList是一樣的西傀。
3.Vector與ArrayList不同的是,所有方法都加上了synchronized同步關(guān)鍵詞桶癣, 所以Vector是線程安全的拥褂,不過也一般比較少用, 一般都采用線程安全的CopyOnWriteArrayList牙寞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肿仑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子碎税,更是在濱河造成了極大的恐慌,老刑警劉巖馏锡,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雷蹂,死亡現(xiàn)場離奇詭異,居然都是意外死亡杯道,警方通過查閱死者的電腦和手機匪煌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來党巾,“玉大人萎庭,你說我怎么就攤上這事〕莘鳎” “怎么了驳规?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長署海。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么滑绒? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任权她,我火速辦了婚禮,結(jié)果婚禮上刀森,老公的妹妹穿的比我還像新娘踱启。我一直安慰自己,他們只是感情好研底,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布埠偿。 她就那樣靜靜地躺著,像睡著了一般飘哨。 火紅的嫁衣襯著肌膚如雪胚想。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天芽隆,我揣著相機與錄音浊服,去河邊找鬼统屈。 笑死,一個胖子當著我的面吹牛牙躺,可吹牛的內(nèi)容都是我干的愁憔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼孽拷,長吁一口氣:“原來是場噩夢啊……” “哼吨掌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脓恕,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤膜宋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后炼幔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秋茫,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年乃秀,在試婚紗的時候發(fā)現(xiàn)自己被綠了肛著。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡跺讯,死狀恐怖枢贿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刀脏,我是刑警寧澤局荚,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站火本,受9級特大地震影響危队,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钙畔,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一茫陆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧擎析,春花似錦簿盅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至现斋,卻和暖如春喜最,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庄蹋。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工瞬内, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迷雪,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓虫蝶,卻偏偏與公主長得像章咧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子能真,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容