ArrayList原始碼分析

2021-09-29 00:20:39 字數 1291 閱讀 9185

注:來自網上資料,僅個人學習筆記用

1、arraylist集合是基於動態陣列實現的,陣列容量能自動增加。

2、arraylist集合是執行緒不安全的,只能用於單執行緒環境下執行緒環境下考慮collections.synchronizedlist(list l)函式返回乙個執行緒安       全的arraylist類,也可以使用concurrent並發包下的copyonwritearraylist類。

3、arraylist集合實現了serializable介面(序列化介面,內無方法,標識介面),因此它支援序列化,能夠通過序列化傳輸。

4、arraylist集合實現了cloneable介面(轉殖介面,內無方法,標識介面),因此它能被轉殖。

5、arraylist集合實現了randomaccess介面,支援快速隨機訪問,實際上就是通過下標序號進行快速訪問。

6、重要的幾個源**。

1)3個構造方法

// arraylist帶容量大小的建構函式。

public arraylist(int initialcapacity)

// arraylist無參建構函式。預設容量是10。

public arraylist()

// 建立乙個包含collection的arraylist

public arraylist(collection<? extends e> c)

————————————————

2)確保容量,即當容量不足是自動增加

// 確定arrarlist的容量。  

// 若arraylist的容量不足以容納當前的全部元素,設定 新的容量=「(原始容量x3)/2 + 1」

public void ensurecapacity(int mincapacity)

} ————————————————

3)新增元素add()

// 新增元素e  

public boolean add(e e) {

// 確定arraylist的容量大小

ensurecapacity(size + 1); // increments modcount!!

// 新增e到arraylist中

elementdata[size++] = e;

return true;

————————————————

7、arraylist集合的自動擴容是基於arrays.copyof()和system.arraycopy()方法

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...