近在回顧數(shù)據(jù)結(jié)構(gòu),想到JDK這樣好的代碼資源不利用有點可惜,這是第一篇,花了心思。篇幅有點長,希望想看的朋友認(rèn)真看下去,提出寶貴的意見。  :)

 

類繼承體系圖                     

                                   大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團訓(xùn)

 

內(nèi)部原理

ArrayList 的3個字段

private transient Object[] elementData;      //對象數(shù)組,用于存儲 持有對象的 引用
 private int size;                           //代表了 ArrayList 的長度。隨著插入 刪除 添加 而改變。
 protected transient int modCount = 0;      //從AbstractList繼承得到,這個字段最后介紹,先忽視它。

 

 

ArrayList保存的真的是對象嗎?
elementData 是一個Object 數(shù)組,這是為了兼容任何類型(Java泛型是所有實際類型共享一份代碼模板的?。。。?。數(shù)組保存的實質(zhì)是持有對象的引用(reference)。引用又可以理解為 對象的“遙控器”(如下圖)。

 

從底層點的角度說,引用實質(zhì)是指針的化身,因此ArrayList即便持有很多個對象,其本身(或者說elementData 數(shù)組)保存的只不過是引用而已,內(nèi)存開銷不會太大。


所以要強調(diào)的是對于保存引用類型,java中的數(shù)組,和各種集合類,持有的是對象的引用,而不是對象本身。

 

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團訓(xùn)

 

 

 

構(gòu)造函數(shù)

空ArrayList