ArrayList與LinekdList原始碼解析

2021-09-29 03:37:49 字數 1020 閱讀 5708

今天看下簡單集合arraylist與linkedlist的原始碼  並分析其擅長和不擅長的操作。。

上圖是arraylist的成員變數  主要變數elementdata 是底層陣列的體現 ,還有一些初始化陣列的成員變數 在list為空的時候進行初始化使用。

建構函式基本是判斷如果為空就初始化 否則將引數帶進去建立。

這兩個圖是插入元素的操作 比較簡單 就是直接將元素按順序放入陣列,再加長陣列長度。

刪除的方法如果引數是下標 先刪除 將新的陣列賦值 並將舊值返回。

如果引數是物件 那麼就要先遍歷找到第乙個與引數相等的值,將其下標取出並呼叫上面引數為下標的刪除方法。

查詢不言而喻  陣列下表確定 查詢的速度會非常快。

另外還有一些批量刪除的方法,就不在貼了 有興趣的可以自己去看一下。

當新增結點的時候,首先判斷下是不是空的鍊錶 ,尾結點如果為空 說明是空的因為如果不為空一點會有尾結點,然後相應的處理是頭結點指向這個傳進來的結點,即將空鍊錶加入乙個結點。此時的頭結點是有的、

鍊錶詳細見:

LinkedList與ArrayList的區別

我們依然從資料結構的角度看度這個問題。從命名上可以大致猜出來linkedlist的資料結構為鍊錶,arraylist的資料結構為陣列。能夠看到這裡它們的區別就一目了然了 它們的區別大致就和陣列和鍊錶的區別是一樣的。在在查詢和刪除操作中陣列的速度要優於鍊錶,這是因為陣列是按照下標來執行這兩個操作的,而...

ArrayList與LinkedList的區別

arraylist與linkedlist的區別 arraylist和linkedlist的大致區別如下 1.arraylist是實現了基於動態陣列的資料結構,linkedlist基於鍊錶的資料結構。2.對於隨機訪問get和set,arraylist覺得優於linkedlist,因為linkedlis...

ArrayList與LinkedList的區別

關於兩者的區別,先通過兩者對資料的操作進行對比 public static void main string args end system.currenttimemillis system.out.println arraylist第一次插入資料前後時間差 end start linkedlist...