關於ArrayList 和LinkedList一些區別的分析

 

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,如此往下找,找到了元素
 
這樣隨機查找,肯定是效率低下的

詳情參照源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章