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ǔ)分析到此