1. 程式人生 > >java集合類原始碼詳解-LinkedList(4)-基於JDK8

java集合類原始碼詳解-LinkedList(4)-基於JDK8

LinkedList 裡面還有個具有新增功能的函式,上回學漏了,這回補上。

它就是linkBefore()------在一個非空節點前,插入資料

這裡打上個斷點

點選下一步。先把size除二  ,去比較。具體的這個node()方法,我們之前學過,這裡跳過。這個方法,其實就是返回我們要查詢索引位的節點的地址。

然後我們再點選下一步,這裡的第一步,第二步,第三步。我們都看到很多次這種套路了,因為我們要在succ節點前插入資料e,

所以先儲存這個節點的前置節點的地址給 pred。 然後建立新節點,把e 放進這個新節點,然後讓新節點指向 succ節點的前置節點,並且讓新節點指向這個succ節點。 然後讓 succ的前置節點 也指向新節點,因為我們的連結串列是雙向連結串列

 

這裡再次點選下一步。這裡需要判斷 是否succ的前置節點是否為空,也就是succ是否是第一個節點

如果為null(說明succ是第一個節點),那麼就把first 引用新節點,那麼就是把的新節點作為第一個節點。這裡我們是false

再次點選下一步。讓 succ的前置節點 指向新節點,然後size++,modCount++,這個方法就呼叫結束了。

 

下面是圖解: