1. 程式人生 > >ArrayList和LinkedList底層實現原理

ArrayList和LinkedList底層實現原理

1.說一下 ArrayList 底層實現方式?

①ArrayList 通過陣列實現,一旦我們例項化 ArrayList 無引數建構函式預設為陣列初始化長度為 10②add 方法底層實現如果增加的元素個數超過了 10 個,那麼 ArrayList 底層會新生成一個數組,長度為原陣列的 1.5 倍+1,然後將原陣列的內容複製到新陣列當中,並且後續增加的內容都會放到新陣列當中。當新陣列無法容納增加的元素時,重複該過程。是一旦陣列超出長度,就開始擴容陣列。擴容陣列呼叫的方法 Arrays.copyOf(objArr, objArr.length + 1);

2.說一下 LinkedList 底層實現方式?

LinkedList 底層的資料結構是基於雙向迴圈連結串列的,且頭結點中不存放資料,如下:


既然是雙向連結串列,那麼必定存在一種資料結構——我們可以稱之為節點,節點例項儲存業務資料,前一個節點的位置資訊和後一個節點位置資訊,如下圖所示: