ArrayList 原始碼詳解

2021-10-03 04:47:30 字數 2707 閱讀 7930

arraylist 繼承 abstractlist 抽象類 是list 的子類

// 預設 陣列大小是 10個

private

static

final

int default_capacity =10;

private

static

final object[

] empty_elementdata =

;private

static

final object[

] defaultcapacity_empty_elementdata =

;//存放資料域

transient object[

] elementdata;

//當前有多少個元素

private

int size;

// 有參構造 傳入自定義arraylist大小 

public

arraylist

(int initialcapacity)

else

if(initialcapacity ==0)

else

}// 無參構造 預設new 的方式

public

arraylist()

// 有參構造 傳入乙個包含collection的arraylist c

public

arraylist

(collection<

?extends

e> c)

else

}

// 傳入乙個 變數加入陣列末尾

public

boolean

add(e e)

// 將元素 存放到指定位置

public

void

add(

int index, e element)

// 呼叫 增加乙個元素 如果陣列滿了 進行擴容

private

void

add(e e, object[

] elementdata,

int s)

//在指定位置開始 增加乙個collection的arraylist c

public

boolean

addall

(int index, collection<

?extends

e> c)

// 增加乙個collection 的arraylist c

public

boolean

addall

(collection<

?extends

e> c)

//	刪除指定位置的元素

public e remove

(int index)

//實現移除

private

void

fastremove

(object[

] es,

int i)

// 移除 arraylist 中首次出現的指定元素物件 o 如果存在的話

public

boolean

remove

(object o)

else

return

false;}

fastremove

(es, i)

;return

true;}

//移除arraylist中包含在c中的元素

public

boolean

removeall

(collection<

?> c)

// 套娃

private object[

]grow()

// 返回了乙個擴容後的

private object[

]grow

(int mincapacity)

// 獲得新的大小容量

private

intnewcapacity

(int mincapacity)

// 如果新的容量 小於 最大array 長度( integer.max_value - 8;) 就返回 新的容量

// 否者就呼叫hugecapacity

return

(newcapacity - max_array_size <=0)

? newcapacity

:hugecapacity

(mincapacity);}

// 靜態方法

private

static

inthugecapacity

(int mincapacity)

// 返回乙個迭代器物件 itr 內部類 實現了iterator介面

public iterator

iterator()

*/private

class

itrimplements

iterator

ArrayList原始碼詳解

成員變數的宣告 成員變數的宣告 private static final object empty elementdata transient object elementdata 儲存元素的陣列 private static final int default capacity 10 構造方法初始...

ArrayList原始碼詳解

成員變數 private static final int default capacity 10 private static final object empty elementdata transient object elementdata private int size default ...

ArrayList原始碼詳解

arraylist是我們日常寫 常用的集合之一,本文就 結合原始碼來介紹arraylist常用方法 預設初始化容量 private static final int default capacity 10 空例項陣列 private static final object empty element...