LinkedList原始碼解析之鍊錶結構

2021-10-03 05:49:55 字數 831 閱讀 5934

單鏈表與雙鏈表的結構圖 

// 單向鍊錶 

class node

// 雙向鍊錶

class node

linkedlist採用的是雙向鍊錶

linkedlist的add()方法

public boolean add(e e) 

void linklast(e e)

linkedlist的get()方法

public e get(int index) 

nodenode(int index) else

}

linkedlist 採用折半查詢,效率低

linkedlist的remove()方法

public e remove(int index) 

// 通過折半查詢獲取當前刪除的元素

nodenode(int index) else

}e unlink(nodex) else

// 判斷當前元素是否是乙個節點 ....

if (next == null) else

x.item = null;

size--;

modcount++;

return element;

}

linkedlist的remove()主要是改變節點的next和prev指向

LinkedList原始碼解析

1 實現了deque,所以是雙向鍊錶,同時可以作為雙向佇列 2 未實現randomaccess,就不能隨即訪問,對於所有的資料結構都是這樣,改介面只是起到標識作用 3 實現轉殖和序列化介面 4 鍊錶就會有節點node,雙向就會有first和last節點 5 預設建構函式什麼都沒有做,鍊錶不需要初始化...

LinkedList原始碼解析

借鑑部落格 正如上面這篇部落格所述,在1.6包括1.6之前,linkedlist都是乙個環形鍊錶結構,直到1.7包括1.7之後linkedlist變成了乙個線性鍊錶結構了。如果大家不是很懂鍊錶的結構,可以去翻看上面的這篇部落格 linkedlist和arraylist同樣提供了list和serial...

LinkedList原始碼解析

private static class node 新增乙個元素 核心思想 判斷是不是末尾插入,是則末尾插入否則指定位置插入 public void add int index,e element 在末尾加上乙個元素 void linklast e e 在指定位置加上乙個元素 void linkbe...