類的字段中包含 初始容量、頭尾指標,以陣列為底層資料結構
transient object elements;
transient int head;
transient int tail;
private static final int min_initial_capacity = 8;
構造器
// 預設構造器 初始容量為16
public arraydeque()
// 建立乙個arraydeque 指定容量大小為 numelements
public arraydeque(int numelements)
// 建立乙個 arraydeque,初始資料為 collection c的所有值
public arraydeque(collection<? extends e> c)
分配具體容量和擴容成兩倍容量方法
private void allocateelements(int numelements)
elements = new object[initialcapacity];
}private void doublecapacity()
新增方法
public void addfirst(e e)
public void addlast(e e)
值得注意的是 arraydeque的 push和pop 分別後台用的是 addfirst 和 removefirst,也就是你直接把arraydeque當成棧用
public void push(e e)
public e pop()
public e peek()
值得注意的是 arraydeque的offer,poll可以當成佇列用
public boolean offer(e e)
public boolean offerlast(e e)
public e poll()
public e remove()
檢測arraydeque的 size和 empty
public int size()
public boolean isempty()
常規迭代器
public iteratoriterator()
private class deqiterator implements iterator
public e next()
public void remove()
lastret = -1;
}public void foreachremaining(consumer<? super e> action)
}}
降序迭代器,起始游標在尾節點,next方法是在陣列前一位進行移動
public iteratordescendingiterator()
private class descendingiterator implements iterator
// next 是將游標在陣列的位置向前移動一位
public e next()
public void remove()
lastret = -1;
}}
看這個arraydeque的原始碼
有趣的地方是 可以直接使用棧、佇列的方法名當成 棧、佇列用,
還有乙個降序迭代器descendingiterator反向遍歷更方便。
ArrayDeque原始碼分析
1.體系結構 了解特性,先看 繫結構 如上所示,知道其支援 序列化,轉殖,迭代器操作,佇列特性。具體實現 除了實現以上介面外,擴充套件abstractcollection 抽象類。2.應用場景 大炮打蒼蠅,還是鳥槍打野豬?工具應用要有場景 arraydeque 為雙端佇列,支援首部,尾部兩端的操作,...
JDK之ArrayDeque原始碼解讀 三
目錄 作用 獲取arraydeque的第乙個元素。如果arraydeque為null,丟擲異常。作用 獲取arraydeque的最後乙個元素。如果arraydeque為null,丟擲異常。作用 獲取arraydeque的第乙個元素。與getfirst 不同在於,如果arraydeque為null,則...
Fabric 原始碼解析 原始碼目錄解析
這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...