ArrayList和LinkedList的區(qū)別

大致的區(qū)別:

  • ArrayList是實現(xiàn)了基于動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu), LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)

  • 對于隨機(jī)訪問get和set,ArrayList優(yōu)于LinkedList,因為ArrayList可以隨機(jī)定位,而LinkedList要移動指針一步一步的移動到節(jié)點處
    (舉例:因為ArrayList的底層是動態(tài)數(shù)組,它屬于一個對象,而LinkedList是鏈表,它是跟很多對象有關(guān)聯(lián)的,所以, 你查詢的話,數(shù)組就很快了,相對Linked而言,它聯(lián)系著很多的對象,查詢的時候,你要把他們都查出來,這個時候從性能和時間上,linkedList就不如ArrayList!)

  • 對于新增和刪除操作add和remove,LinedList比較占優(yōu)勢,只需要對指針進(jìn)行修改即可,而ArrayList要移動數(shù)據(jù)來填補被刪除的對象的空間。
    (ArrayList在添加和刪除的時候,底層是創(chuàng)建一個新的數(shù)組,而LinkedList卻只要修改一下指針就ok了)

什么時候用哪個?

首先ArrayList和linkedList 是兩個集合類,用于存儲一系列的對象引用

1.ArrayList的內(nèi)部實現(xiàn)是基于基礎(chǔ)的對象數(shù)組的,因此,它使用get方法訪問列表中的任意一個元素時(random access),它的速度要比LinkedList快

2.LinkedList中的get方法是按照順序從列表的一端開始檢查,直到另外一端。對LinkedList而言,訪問列表中的某個指定元素沒有更快的方法了。

3.當(dāng)操作是在一列數(shù)據(jù)的后面添加數(shù)據(jù)而不是在前面或中間,并且需要隨機(jī)地訪問其中的元素時,使用ArrayList會提供比較好的性能;

4.當(dāng)你的操作是在一列數(shù)據(jù)的前面或中間添加或刪除數(shù)據(jù),并且按照順序訪問其中的元素時,就應(yīng)該使用LinkedList了。

所以, 簡單的來說

<font color="red">業(yè)務(wù)如果查詢多,就用ArrayList
業(yè)務(wù)添加或者刪除的多 就用 linkedList</font>

思維導(dǎo)圖如下:

[圖片上傳失敗...(image-93c3fb-1511427580638)]

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

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

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