node是linkedlist儲存的基本單位
private static class node
}
儲存之前的尾節點
建立新的節點,新節點的前置直接點是之前的尾節點,後置節點為null
將last指向最新的尾節點
如果之前的鍊錶中乙個元素也沒有,那麼新建立的節點既是尾節點又是頭結點
如果之前鍊錶中已經有元素,那麼將之前的尾節點指向新的節點
將數量加一
查詢鍊錶中下標為index 的節點,利用二分法查詢,先判斷index是在左邊還是右邊,如果是左邊,就從做往右查詢,如果是右邊,就從右往左查詢,假設找到的節點為a。
如果是在尾部插入,就呼叫linklast方法,其實現和add(e e)方法一樣
如果是在中間插入,就建立新的節點,假設新的節點為b,b的後置節點為a,前置節點為a的前置節點,若a的前置節點為null(在煉表頭插入),就將first指向新的節點b,若a的前置節點c不為null,那麼就將前置節點c的next指向新節點b。
將數量加1
// 父類中的方法
public void add(int index, e element) catch (nosuchelementexception exc)
}public listiteratorlistiterator(int index)
private class listitr implements listiterator
}// 返回下標為index的元素
nodenode(int index) else
}// listitr 中的方法
public void add(e e)
// 和add(e e)的實現是相同的
呼叫這個方法,刪除的是頭結點。
LinkedList 原始碼分析
linkedlist資料結構是 雙向鍊錶 先來講下單鏈表和雙向鍊錶 雙向鍊錶 單鏈表相對於雙向鍊錶來說,結構簡單。但有乙個缺點,即在單鏈表中只能通過乙個節點的引用訪問其後續節點,無法直接訪問其前驅節點,如果在單鏈表中想找到某個幾點的前驅節點,必須遍歷鍊錶,耗費時間。因此擴充套件了單鏈表,在單鏈表結構...
LinkedList原始碼分析
資料結構 linkedlist是雙向迴圈鍊錶 1.構造方法 constructs an empty list.構造乙個空的列表 public linkedlist private transient entryheader new entry null,null,null entry e eleme...
LinkedList原始碼分析
linkedlist雖然和arraylist都實現了list介面,但兩者的底層資料結構截然不同。從類名可以看出,arraylist底層資料結構是陣列,而linkedlist底層資料結構是雙向鍊錶。兩者資料結構的優劣如下,arraylist按下標查詢元素速度快,但插入元素或者刪除元素效率低,因為都設計...