ArrayList和LinkedList區(qū)別

ArrayList和LinkedList都是經(jīng)常使用的集合工具,但真正原理卻千差萬別。
本質(zhì)區(qū)別就是: ArrayList是數(shù)組結(jié)構(gòu),LinkedList是鏈表結(jié)構(gòu)。
基于本質(zhì)的區(qū)別,可以總結(jié)ArrayList和LinkedList的特點和不同點了。
1、增加元素到列表末尾時,當元素個數(shù)超過數(shù)組限制,ArrayList要進行數(shù)組擴容,這對性能有一定影響。而本質(zhì)是鏈表的LinkedList則不需要進行擴容。
2、增加元素到任意位置時,本質(zhì)是數(shù)組的ArrayList需要移動后面的元素重新排列,開銷也會隨著添加元素位置越靠前而越大,而本質(zhì)是鏈表的LinkedList則只要改變前后的指向就行,性能開銷遠遠小于ArrayList.
3、刪除任意元素同上。
4、遍歷性能對比:
構(gòu)造一個擁有100萬數(shù)據(jù)的ArrayList和等價的LinkedList,使用以上代碼進行測試,測試結(jié)果的相對耗時如下表所示:


image.png

LinkedList因為是鏈表實現(xiàn),所以在迭代遍歷中占有很明顯的優(yōu)勢,而在通過數(shù)組下標的遍歷中,鏈表需要通過指針計算出下標來遍歷,所以性能非常慢,而ArrayList因為是數(shù)組實現(xiàn),通過數(shù)組下標遍歷速度最快。

參考資料: https://www.cnblogs.com/sierrajuan/p/3639353.html

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

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

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