ArrayList原始碼分析

2021-06-26 13:45:16 字數 1412 閱讀 1000

arraylist是平時使用很多的乙個類,趁有時間,我也閱讀以下原始碼,以幫助自己加深理解。類的層次結構這裡就不列出了,主要分析一下原始碼部分,

屬性部分:

protected transient int modcount = 0; //這個屬性是從abstractlist繼承過來的,每次arraylist進行結構變化時都會+1.下面會從原始碼角度去分析這個屬性.

private static final int default_capacity = 10; //這個屬性是預設初始容量大小
private static final object empty_elementdata = {}; //空陣列,宣告為static final,每個空的arraylist例項都能共享此屬性,節省了記憶體開支,這種設計值得學習;
private transient object elementdata; //object陣列型別,存放的元素內容
private int size; //所儲存的元素的個數

建構函式部分:

public arraylist()

public arraylist(int initialcapacity)

public arraylist(collection<? extends e> c)

方法部分:

public void trimtosize() 

}

接下來講講與arraylist擴容相關的方法

public void ensurecapacity(int mincapacity) 

}

private void ensureexplicitcapacity(int mincapacity)

public boolean add(e e)

private void ensurecapacityinternal(int mincapacity) //保證arraylist最小容量最10

ensureexplicitcapacity(mincapacity);

}

private void grow(int mincapacity)

先停止一下,哎第一次寫部落格,把東西寫出來不是一件容易事啊,堅持補充完下班後。

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

ArrayList原始碼分析

預設容量大小 private static final int default capacity 10 例項化arraylist時是乙個空object陣列 private static final object empty elementdata 預設容量空元素陣列,當第一次新增元素時會和此陣列判斷...