Vector原始碼解析

2022-07-25 15:42:36 字數 2086 閱讀 8779

1、屬性

//

儲存元素的陣列

protected

object elementdata;

//儲存元素的個數

protected

intelementcount;

//擴容時的增加量,大於0是增加capacityincrement,否則增加兩倍(預設兩倍)

protected

intcapacityincrement;

//陣列的最大容量

private

static

final

int max_array_size = integer.max_value - 8;

2、構造方法

//

無參構造方法

public

vector()

public vector(int

initialcapacity)

public vector(int initialcapacity, int

capacityincrement)

//

不常用public vector(collection<? extends e>c)

注意:下面的增刪查改都只說明乙個,其他的和arraylist的操作差不多(只有擴容方式和arraylist有區別)

3、新增

public

synchronized

boolean

add(e e)

private

void ensurecapacityhelper(int

mincapacity)

//

擴容方法

private

void grow(int

mincapacity)

private

static

int hugecapacity(int

mincapacity)

4、刪除

public

boolean

remove(object o)

public

synchronized

boolean

removeelement(object obj)

return

false

; }

public

intindexof(object o)

public

synchronized

int indexof(object o, int

index)

else

return -1;

}

public

synchronized

void removeelementat(int

index)

else

if (index < 0)

int j = elementcount - index - 1;

if (j > 0)

elementcount--;

elementdata[elementcount] = null; /*

to let gc do its work

*/}

//

刪除陣列中下標為index的元素

public

synchronized e remove(int

index)

5、查詢

public

synchronized e get(int

index)

e elementdata(int

index)

6、修改

public

synchronized e set(int

index, e element)

《stlport》原始碼解析 vector

1 開啟stlport 的原始碼了嗎,我這裡使用4.6.2版本,其他版本也無妨啊。2 進入stlport stl目錄,有木有很多 list.h,vector.h的檔案,恭喜你找對了。3 開啟 vector.h看看吧,建議用ue或者其他ide環境,這樣方便看哦。4 template class vec...

JDk原始碼解析之四 Vector原始碼解析

具體的三個屬性 解釋看圖中注釋。vector沒有採取arraylist臨界值擴容的辦法,而是每次不夠的時候,直接根據capacity的值來增加。具體怎麼增加後面會說。vector的構造方法如下。簡單粗暴,如果呼叫無參建構函式,直接就將初始容量設定成了10,最終在右側的構造方法裡,將陣列的長度設定為1...

Vector原始碼解析 jdk1 8

概述 vector實現了list的介面,底層同樣是基於陣列實現的,可以儲存null。功能結構與arraylist的類似,不同的是執行緒安全的。建構函式protected object elementdata protected int capacityincrement public vector ...