ArrayList原始碼分析

2021-10-09 08:51:52 字數 939 閱讀 8867

arraylist 主要整合了list介面,我們還是從我們經常使用來看,這種集合類之所以好用,有一部分原因是我們不必像陣列那樣, 初始化必須指明了大小。比如 list list=new arraylist<>();

elementdata 屬於object 預設置空。也不會做任何操作。

/**

* constructs an empty list with an initial capacity of ten.

*/public

arraylist()

主要分析add和get操作。

public

boolean

add(e e)

//初始化的時候實際上size為0.

private

void

ensurecapacityinternal

(int mincapacity)

ensureexplicitcapacity

(mincapacity)

;}

private

void

ensureexplicitcapacity

(int mincapacity)

關鍵是grow方法,進來分析下。

private

void

grow

(int mincapacity)

//此操作也是非常簡單的。

public e get

(int index)

//現在有個問題。hashmap也是利用了 陣列作為基礎的資料結構,那麼hashmap是否也可以利用二維陣列去描述呢?

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