ArrayList原始碼分析精簡版

2021-09-25 04:16:09 字數 1150 閱讀 8763

// 若當前為空陣列,新增時取傳入的值和預設的容量中較大的,如傳入3,則用預設的10.

// 當要add進第乙個元素時,mincapacity為1,在math.max()方法比較後,mincatacity為10.

private

static

intcalculatecapacity

(object[

] elementdata,

int mincapacity)

return mincapacity;

}

//判斷是否需要擴容

private

void

ensureexplicitcapacity

(int mincapacity)

/**

* arraylist擴容的核心方法

* @param mincapacity the desired minimum capacity

*/private

void

grow

(int mincapacity)

/**

* 將特定的元素追加到此列表的末尾

*/public

boolean

add(e e)

/**

* 在此列表中的指定位置插入指定的元素。

* 先呼叫 rangecheckforadd 對index進行界限檢查;然後呼叫 ensurecapacityinternal 方法保證capacity足夠大;

* 再將從index開始之後的所有成員後移乙個位置;將element插入index位置;最後size加1。

*/public

void

add(

int index, e element)

ArrayList原始碼分析

arraylist是平時使用很多的乙個類,趁有時間,我也閱讀以下原始碼,以幫助自己加深理解。類的層次結構這裡就不列出了,主要分析一下原始碼部分,屬性部分 protected transient int modcount 0 這個屬性是從abstractlist繼承過來的,每次arraylist進行結...

ArrayList原始碼分析

有參建構函式傳入乙個int public arraylist int capacity 如果為0則返回空陣列,否則new 乙個capacity的陣列 array capacity 0 emptyarray.object new object capacity 無參建構函式 public arrayl...

ArrayList原始碼分析

最近因為擁抱變換,所以開始無奈的面試之路。因為在集合的原始碼分析上,出了些問題,所以這段時間,好好重新理一理常用的集合原始碼。版本基於jdk1.7 毫無疑問,提到常用集合。arraylist勢必是第乙個被搬出來的,因此我們就先拿它開刀了。arraylist的初始化,只有在第一次add的時候進行new...