java原始碼分析08 LinkedList

2021-07-07 05:05:05 字數 1060 閱讀 2673

喜歡乙個人,就會喜歡她的一切嗎?

今天,我們來看下linkedlist的結構。

linkedlist內部其實是雙向鍊錶實現的,而且擁有輪詢以及出棧的功能。

增刪改查:

public boolean add(e e)
void linklast(e e)
每次增加新的元素,都是在鍊錶末尾加上,注意當前時刻的末尾節點是否為空,然後add之後需要將size加一,modcount也需要加一。

public e get(int index)
private void checkelementindex(int index)
private boolean iselementindex(int index)
查詢的時候,需要先檢查是否為有效查詢,也就是下標是否在0與size-1之間。

nodenode(int index)  else
此處有乙個優化,首先判斷下標是在中間節點的左邊還是右邊,如果在左邊就從頭結點開始遍歷;否則從尾結點開始遍歷查詢。

輪詢機制

public e poll()
此處為什麼定義乙個final型別的引用,而沒有直接unlinkfirst(first)?

private e unlinkfirst(nodef)
刪除頭結點,第一步,提前儲存頭結點的後繼;第二,頭結點的值設為null,其下一節點為null;第三,將first指向之前儲存的已刪除節點的後繼。第四,判斷後繼是否為空,為空那麼last為null,否則後繼的前驅為null。

public int indexof(object o) 

} else

}return -1;

}

java原始碼分析

在往佇列中插入資料由下面幾個函式,他們的區別就是對佇列滿的情況處理不同 put 一直等待著 offer 無時間 如果空了直接返回false offer 有時間 等待指定的時間,在指定時間內如果空了,那麼插入,負責返回false add 丟擲乙個illegalstateexception異常 首先來看...

AQS原始碼分析 08(LockSupport)

image.png object name image.png originheight 85 originwidth 599 size 5821 status done style none width 570 image.png object name image.png originheigh...

《Java原始碼分析》 LinkedHashMap

public class linkedhashmap extends hashmap implements map從結構可以看出,linkedhashmap繼承hashmap並實現了map介面。下面幾個是linkedhashmap的建構函式,每個建構函式都是直接呼叫父類hashmap的建構函式來完成...