借鑑部落格:
正如上面這篇部落格所述,在1.6包括1.6之前,linkedlist都是乙個環形鍊錶結構,直到1.7包括1.7之後linkedlist變成了乙個線性鍊錶結構了。
如果大家不是很懂鍊錶的結構,可以去翻看上面的這篇部落格
linkedlist和arraylist同樣提供了list和serializable介面,其中abstractsequentiallist也是提供了list介面,這裡再次宣告出來只是為了更加清晰。
deque介面定義了雙端佇列的操作
int size = 0;//當前鍊錶有多少節點
transient nodefirst;//指向鍊錶第乙個節點的引用
transient nodelast;//指向鍊錶最後乙個節點的引用
public
linkedlist()
public
linkedlist(collection extends e> c)
public
boolean
addall(collection extends e> c)
public
boolean addall(int
index, collection extends e> c) else
for (object o : a)
if (succ == null) else
size += numnew;
modcount++;
return
true;
}
private
static
class node
}
這段**其實還是比較好理解的,分兩種情況,一種是原來的鍊錶為空,一種是原來的鍊錶為值
這裡就看看後者吧
LinkedList原始碼解析
1 實現了deque,所以是雙向鍊錶,同時可以作為雙向佇列 2 未實現randomaccess,就不能隨即訪問,對於所有的資料結構都是這樣,改介面只是起到標識作用 3 實現轉殖和序列化介面 4 鍊錶就會有節點node,雙向就會有first和last節點 5 預設建構函式什麼都沒有做,鍊錶不需要初始化...
LinkedList原始碼解析
private static class node 新增乙個元素 核心思想 判斷是不是末尾插入,是則末尾插入否則指定位置插入 public void add int index,e element 在末尾加上乙個元素 void linklast e e 在指定位置加上乙個元素 void linkbe...
LinkedList原始碼解析
linklist 和arraylist的區別在於linklist底層是以鍊錶實現的,arraylist是與陣列資料結構存在 private static class node transient int size 0 當前鍊錶長度 transient nodefirst 鍊錶的第乙個元素 trans...