關於ArrayList

注:本文關於的ArryList基於jdk1.7(由於公司用的就是1.7),1.8等樓主有時間再更程序員

廢話很少說,直接上源碼redis

首先,繼承關係:數組


這裏插一嘴,Serializable 啓用其序列化功能的接口提供序列化,在開發過程當中實體類最好都實現,由於樓主在開發過程當中常常忘記實現,致使在dubbo調用的時候沒法序列化報錯,還有在把數據放入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

add方法:




remove方法(根據傳入的位置進行移除):


remove方法(根據傳入的對象進行移除):




解釋爲什麼elementData被transient 修飾

其餘的方法基本是這些方法的升級,基礎方法都懂了,未嘗看不懂其餘的方法呢!


若是有錯誤或者更好的說明,請在下發留言,我會在第一時間回覆改正,謝謝!


我不能保證我會在程序員這一行業中一直走下去,但至少此刻,個人信念仍堅決不移。

相關文章
相關標籤/搜索