大致的區別:
ArrayList是實現了基于動態數組的數據結構, LinkedList基于鏈表的數據結構
對于隨機訪問get和set,ArrayList優于LinkedList,因為ArrayList可以隨機定位,而LinkedList要移動指針一步一步的移動到節點處
(舉例:因為ArrayList的底層是動態數組,它屬于一個對象,而LinkedList是鏈表,它是跟很多對象有關聯的,所以, 你查詢的話,數組就很快了,相對Linked而言,它聯系著很多的對象,查詢的時候,你要把他們都查出來,這個時候從性能和時間上,linkedList就不如ArrayList!)對于新增和刪除操作add和remove,LinedList比較占優勢,只需要對指針進行修改即可,而ArrayList要移動數據來填補被刪除的對象的空間。
(ArrayList在添加和刪除的時候,底層是創建一個新的數組,而LinkedList卻只要修改一下指針就ok了)
什么時候用哪個?
首先ArrayList和linkedList 是兩個集合類,用于存儲一系列的對象引用
1.ArrayList的內部實現是基于基礎的對象數組的,因此,它使用get方法訪問列表中的任意一個元素時(random access),它的速度要比LinkedList快
2.LinkedList中的get方法是按照順序從列表的一端開始檢查,直到另外一端。對LinkedList而言,訪問列表中的某個指定元素沒有更快的方法了。
3.當操作是在一列數據的后面添加數據而不是在前面或中間,并且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能;
4.當你的操作是在一列數據的前面或中間添加或刪除數據,并且按照順序訪問其中的元素時,就應該使用LinkedList了。
所以, 簡單的來說
<font color="red">業務如果查詢多,就用ArrayList
業務添加或者刪除的多 就用 linkedList</font>
思維導圖如下:
[圖片上傳失敗...(image-93c3fb-1511427580638)]