ArrayList實(shí)現(xiàn)和LinkedList實(shí)現(xiàn)

ArrayList是利用動(dòng)態(tài)數(shù)組實(shí)現(xiàn)。由于是動(dòng)態(tài)數(shù)組,在add或者remove的時(shí)候,會需要將數(shù)組的i+1到size()的所有元素往后移一位,要是遇到了數(shù)組長度不夠的情況下還會創(chuàng)建一個(gè)新數(shù)組是舊數(shù)組的長度的兩倍,耗費(fèi)的代價(jià)是巨大的,但是在操作get和set的時(shí)候時(shí)間復(fù)雜度是O(1)。

而LinkedList是通過雙向鏈表去實(shí)現(xiàn),在java中并沒有指針,于是使用了node的對象,儲存date和下一個(gè)的node對象和上一個(gè)的node對象。在進(jìn)行add或者remove操作時(shí),通過對指定元素的上一個(gè)節(jié)點(diǎn)和下一個(gè)節(jié)點(diǎn)的指向就能簡單的實(shí)現(xiàn),但是在這之前需要找出對應(yīng)的節(jié)點(diǎn),需要進(jìn)行一次O(N/2)代價(jià)的操作。



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

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

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