1. 程式人生 > >linkedlist和arraylist底層實現,linkedlist的內部構造

linkedlist和arraylist底層實現,linkedlist的內部構造

我當然不是第一個發現的,網上也有很多人寫過測試的demo,我也自己寫過,同時往ArrayList和LinkedList塞入上萬個元素,然後在指定位置連續插入元素(迴圈次數越大越明顯)。

指定位置從頭部開始逐步後移,可以明顯的看到,ArrayList消耗的時間越來越短成線形越來越短(符合前面提到的,插入位置越靠後,開銷越小);

而LinkedList則是成正態分佈,當位置處於集合中部的時候,最慢。究其原因,因為LinkedList插入元素是需要先進行元素的查詢定位,然後才能進行首尾連結的拆分、重新指向新元素的,然而LinkedList的遍歷有多低效,大家也是清楚明白的。

真實的業務場景中,一般都是隨機訪問和增刪並存的,因為ArrayList的出場率顯然比LinkedList要高,比較常用;當然,如果出現了需要類似佇列結構的先進先出這種需要在首尾都進行增刪操作,或是棧結構在頭部操作元素的情況,自然是要選擇LinkedList了,畢竟LinkedList是實現了佇列介面的。