



比如,在一個(gè)已經(jīng)添加了0 1 2 3 4的ArrayList中進(jìn)行add(5)操作,首先進(jìn)行擴(kuò)容檢查ensureCapacity(size + 1),然后把5放在下標(biāo)為5的位置,把size指針往后移動(dòng)。正果時(shí)間復(fù)雜度為O(1)。
假如進(jìn)行add(2,6),要在數(shù)組下標(biāo)為2的位置插入6這個(gè)元素,首先會(huì)進(jìn)行邊界檢查防止插入位置不合法,然后進(jìn)行擴(kuò)容檢查,之后會(huì)把2,3,4,5往后復(fù)制,復(fù)制之后index為2的位置還是2,此時(shí)把6替換2,size指針任然要往后移動(dòng)。整個(gè)過(guò)程時(shí)間空間復(fù)雜度都是O(n).


如上代碼,在一個(gè)已有元素【0,1,2,3,4,5,6】的列表刪除數(shù)組下標(biāo)為2的元素,首先會(huì)檢查下標(biāo)范圍是否合法,然后把index后面的數(shù)都向前移動(dòng)復(fù)制一位。最后把原來(lái)數(shù)組末尾指針指向null;
remove(object)
這個(gè)方法首先會(huì)從elementData數(shù)組里邊從頭到尾遍歷尋找該對(duì)象,然后會(huì)調(diào)用fastRemove方法進(jìn)行刪除,fastRemove方法和remove方法大同小異時(shí)間復(fù)雜度仍然是O(n)。

get是對(duì)數(shù)組的隨即訪(fǎng)問(wèn),肯定時(shí)間復(fù)雜度為O(1)

index是對(duì)對(duì)象的順序查找,時(shí)間復(fù)雜度為O(n)

set是對(duì)數(shù)組的隨機(jī)修改,直接操作數(shù)組,時(shí)間復(fù)雜度為O(1)














