ArrayList原始碼分析

2021-10-01 07:14:23 字數 1307 閱讀 7514

arraylist是一種最常用的集合類,底層資料結構是陣列,提供動態擴充套件陣列長度的特性,允許元素的值為null。arraylist是一種非執行緒安全的集合類,若要在多執行緒的環境,需要注意同步問題,也可以使用collections.synchronizedlist()方法保證執行緒安全問題。

預設構造方法,建立乙個空的陣列物件

public arraylist() 

private static final object empty_elementdata = {};

建立指定大小的陣列物件

public arraylist(int initialcapacity)
根據乙個集合物件建立arraylist

public arraylist(collection extends e> c)

public boolean add(e e) 

// 確定陣列大小

private void ensurecapacityinternal(int mincapacity)

ensureexplicitcapacity(mincapacity);

}// 陣列擴容

private void ensureexplicitcapacity(int mincapacity)

private void grow(int mincapacity)

public void add(int index, e element)
返回指定位置的元素

public e get(int index)
將原陣列中的元素返回,並將新元素插入

public e set(int index, e element)

// 移除指定位置元素

public e remove(int index)

// 移除指定物件

public boolean remove(object o)

} else

}return false;

}

本文由部落格一文多發平台 openwrite 發布!

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