ArrayList与LinkedList的比较
ArrayList 繼承AbstractList<E>,實(shí)現(xiàn)List、Cloneable和Serializable接口
LinkedList繼承AbstractSequentialList<E>,實(shí)現(xiàn)List、Cloneable和Serializable接口
?
元素存儲(chǔ)方式:
ArrayList 采用數(shù)組的方式存儲(chǔ)
LinkedList采用鏈表結(jié)構(gòu)存儲(chǔ)
add:
- 對(duì)于元素的add()來說,LinkedList要比ArrayList要快一些,因?yàn)锳rrayList可能需要額外的擴(kuò)容操作,當(dāng)然如果沒有擴(kuò)容,二者沒有很大的差別
- 對(duì)于元素的add(int, element),對(duì)于LinkedList來說,代價(jià)主要在遍歷獲取插入的位置的元素,而ArrayList的主要代價(jià)在于可能有額外的擴(kuò)容和大量元素的移動(dòng)
- 小結(jié):對(duì)于簡單的元素添加,如果事先知道元素的個(gè)數(shù),采用預(yù)置大小的ArrayList要更好,反之可以考慮LinkedList
remove:
刪除操作中,LinkedList更有優(yōu)勢,一旦找到了刪除的節(jié)點(diǎn),它僅僅只是斷開鏈接關(guān)系,并沒有元素復(fù)制移動(dòng)的行為,而ArrayList不可避免的又要進(jìn)行元素的移動(dòng)。
遍歷:
按照索引遍歷,ArrayList是更好的選擇,按照Iterator遍歷,也許LinkedList會(huì)好一些。
反過來理解,如果是ArrayList,Iterator和index遍歷都可以,如果是LinkedList,優(yōu)先選擇Iterator比較好。
其他
- 對(duì)于ArrayList和LinkedList, size() isEmpty() 這些都是常量計(jì)算,代價(jià)很低
- LinkedList實(shí)現(xiàn)了更多的方法,包括Queue,所以它也是一種隊(duì)列
- 對(duì)于少量得元素臨時(shí)存儲(chǔ),優(yōu)先考慮ArrayList
- 頻繁的添加和刪除操作的時(shí)候,優(yōu)先使用LinkedList
- 頻繁的按索引訪問遍歷,優(yōu)先使用ArrayList
轉(zhuǎn)自:http://www.xeclipse.com/?p=1324
?
轉(zhuǎn)載于:https://blog.51cto.com/ak1ng/1137201
總結(jié)
以上是生活随笔為你收集整理的ArrayList与LinkedList的比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AS3 鼠标指针样式
- 下一篇: js英文文章