arrayList
linkedlist
1.添加 ,都是往末尾添加,速度沒有區別,分別添加1-10 ,10個元素
2.執行從中間刪除
arraylist會將被刪除的元素後面的往前一,將最後一位置爲null
linkedlist會將被刪除的鏈表斷開,然後將被刪除的元素前後元素重新鏈接即可
3.新增類似刪除
4.get()根據下標獲取值
arraylist數組在內存中是一個連續空間(可以理解爲一個人保管數據)
linkedlist鏈表在內存中是分散的空間(可以理解爲多個人保管數據)
arraylist 可以很快的在連續內存中找到對應下標的元素返回
likedlist ,只能很快的找到頭和尾,然後根據集合下標和集合長度判斷是屬於0-index 還是index-last
如果在0-index,正好,循環index次可以找到元素
如果在index-last,那麼不可能還是從0循環,那樣更慢,這時候,倒着找,找到index位置即可
找的時候,先找到first或者last,然後在這個node有存有next節點的指針,再找到next,如此往下找,找到了元素
這樣隨機查找,肯定是效率低下的
詳情參照源碼