今日份源碼——ArrayList

ArrayList原理解讀

ArrayList基本數(shù)據(jù)結(jié)構(gòu)

源碼基本結(jié)構(gòu)

我們看到,有好多個(gè)空數(shù)組,可見,ArrayList中是用數(shù)組來存儲(chǔ)數(shù)據(jù)的。那這些數(shù)組是怎么用的呢?繼續(xù)看

幾個(gè)典型的方法分析

1、判斷包含某個(gè)值,可是逐個(gè)按下標(biāo)遍歷數(shù)組數(shù)據(jù)

遍歷elementData數(shù)組,逐個(gè)取值進(jìn)行匹配判斷

indexOf(o) 返回的是o元素第一次出現(xiàn)的index——數(shù)組下標(biāo)

2、從后往前遍歷,查找o最后出現(xiàn)的位置index,下標(biāo)從大到小遍歷數(shù)組

4、含有一個(gè)clone方法,實(shí)則是將elementData數(shù)組數(shù)據(jù)拷貝

測(cè)試方法

5、可以直接轉(zhuǎn)成一個(gè)數(shù)組

注意長度

使用方法

6、獲取數(shù)據(jù)

檢查下標(biāo)大小

直接讀取下標(biāo)數(shù)據(jù),非常迅速

直接由數(shù)組下標(biāo)讀取值時(shí)間復(fù)雜度O(1)

7、添加數(shù)據(jù)

size是實(shí)際存儲(chǔ)的數(shù)據(jù)的個(gè)數(shù)(有別于數(shù)組容量)
擴(kuò)容、遷移判斷
grow方法牽扯數(shù)組擴(kuò)容、數(shù)據(jù)遷移

擴(kuò)容是原容量的1.5倍擴(kuò)容(在使用ArrayList時(shí),如果大致知道數(shù)值個(gè)數(shù),初始化時(shí)給出容量是最好的)

判斷是否需要擴(kuò)容、遷移

添加新數(shù)據(jù)到數(shù)組

基礎(chǔ)分析到此

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容