大致的區(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)]