注:本文關於的ArryList基於jdk1.7(由於公司用的就是1.7),1.8等樓主有時間再更程序員
廢話很少說,直接上源碼redis
首先,繼承關係:數組
解釋一下 transient 關鍵字:由此關鍵字修飾,那麼在序列化的時候,這些屬性不會被序列化。那爲何要修飾elementData呢? 見最後一張圖。設計
DEFAULT_CAPACITY:默認大小
3d
Object[] EMPTY_ELEMENTDATA:空的object數組cdn
Object[] elementData:實際又來存儲數據的數組
對象
size:整個ArrayList的大小blog
MAX_ARRAY_SIZE:最大容量,爲了知足不一樣虛擬機,設計成Integer最大值-8。
繼承
接下來,構造方法:接口
默認構造方法:
這裏只是把 EMPTY_ELEMENTDATA賦給elementData,並無分配內存
定義數組時沒有限定長度,則在用到它的時候,系統開始分配內存。
初始化一個自定義大小的ArrayList
其餘的方法基本是這些方法的升級,基礎方法都懂了,未嘗看不懂其餘的方法呢!
若是有錯誤或者更好的說明,請在下發留言,我會在第一時間回覆改正,謝謝!
我不能保證我會在程序員這一行業中一直走下去,但至少此刻,個人信念仍堅決不移。