僅大致過了下,有問題的請指出,謝謝。
1.8
佇列介面,抽象實現,優先順序佇列
雙端佇列介面,雙端佇列實現
deque
public
inte***ce
queue
extends
collection
public
abstract
class
abstractqueue
extends
abstractcollection
implements
queue
class
priorityqueue
extends
abstractqueue
public
inte***ce
deque
extends
queue
class
linkedlist
extends
abstractsequentiallist
implements
list
, deque
class
arraydeque
extends
abstractcollection
implements
deque
基於鍊錶實現的雙端佇列。
介紹略。主要是實現了deque的進offer
、出poll
、取peek
系列函式。
基於陣列實現的雙端佇列。
transient
為了自定義序列化,減少儲存損耗。
head和tail儲存頭尾索引。
最小容量為8.
transient object[
] elements
transient
int head
transient
int tail
private
static
final
int min_initial_capacity =
8
預設容量:16
指定容量:需大於min_initial_capacity =8
,且保證容量為2的指數倍,保證方法calculatesize
head
和tail
取預設值,0(成員變數賦對應型別預設零值)
public
arraydeque()
public
arraydeque
(int numelements)
// 測試:傳入9,返回16;傳入17,返回32
private
static
intcalculatesize
(int numelements)
return initialcapacity;
}
預設:尾部進
public
void
addlast
(e e)
擴容方法為:doublecapacity()
前提:容量滿
大致流程:
1. 儲存索引:head、tail、當前容量…
2. 計算新容量:elements.length << 1
3. 防止超出型別值int
範圍
4. 分配記憶體
5. 賦值並移動:由於陣列隊列為迴圈結構,需使用兩次system.arrcopy
;另外,head置0,tail置原長度
private
void
doublecapacity()
預設:首部出
public e pollfirst()
public
intsize()
public
boolean
isempty()
基於陣列實現的優先順序佇列。
預設容量:11
預設比較器:null
private
static
final
int default_initial_capacity =11;
transient object[
] queue
private
int size =
0private
final comparator<
?super e> comparator
transient
int modcount =
0
容量小於64,容量增加一倍;容量大於等於64,容量增加50%。
private
void
grow
(int mincapacity)
預設尾部進,向上調整
public
boolean
offer
(e e)
private
void
siftupcomparable
(int k, e x)
queue[k]
= key;
}
預設首部出,取尾部元素複製給queue[0]
,向下調整
public e poll()
private
void
siftdowncomparable
(int k, e x)
queue[k]
= key;
}
迭代器遍歷陣列,即堆按照自頂向下,自左向右的方式遍歷。 《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...
原始碼閱讀 Glide原始碼閱讀之with方法(一)
前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...
佇列Queue原始碼分析
定義 佇列是 只允許在一端進行插入操作,而在另一端進行刪除操作的線性表 缺點 出棧複雜度高,容易造成假溢位 可能對頭有很多空位置,此時插入放到了隊尾,就可能造成溢位,此時叫做假溢位 解決辦法 迴圈佇列 把頭尾相接的循序儲存結構稱為迴圈佇列 可以解決假溢位 佇列的鏈式儲存及結構模式 佇列的鏈式儲存及結...