繼承自hashmap結構,實現了按照插入順序進行訪問和按照訪問順序,其目的是把很久沒有訪問的key刪除
這裡需要注意一點,after不是hashmap裡的next
/**
* 煉表頭
*/transient linkedhashmap.entry
head;
/** * 鍊錶尾
*/transient linkedhashmap.entry
tail;
/** * 控制兩種訪問模式的字段,預設false
* true 按照訪問順序
* false 按照插入順序
*/final
boolean accessorder;
/**
* 構造乙個按插入順序的例項
* 預設的初始容量是16,載入因子時0.75
*/public linkedhashmap(
)
按照新增順序新增
使用方式
public
class
test
}}
執行結果
1:1
2:23:3
4:45:5
linkedhashmap繼承了hashmap,重寫了put方法中的新建節點方法newnode、newtreenode、afternodeaccess方法,新增節點直接追加到鍊錶尾部,所以可以按照鍊錶插入順序訪問
//新增節點,並追加到鍊錶尾部
node
newnode
(int hash, k key, v value, node
e)private
void
linknodelast
(linkedhashmap.entry
p)}
訪問最少刪除策略
使用方式
linkedhashmap
map=
newlinkedhashmap
(4,0.75f
,true
)@override
protected
boolean
removeeldestentry
(map.entry eldest)};
iterator iterator= map.
entryset()
.iterator()
;while
(iterator.
hasnext()
) system.out.
println
("--------");
integer num=map.
get(20)
; system.out.
println
(num)
; system.out.
println
("--------");
iterator iterator1= map.
entryset()
.iterator()
;while
(iterator1.
hasnext()
)
執行結果
9:10
20:20
22:22
--------
20--------
9:10
22:22
20:20
重寫了hashmap的get方法
public v get
(object key)
put方法
這個裡實現了put的時候的刪除操作
void
afternodeinsertion
(boolean evict)
}
訪問的時候通過afternodeaccess將元素放到末尾
public v get(object key)
void afternodeaccess(node e)
tail
= p;
++modcount;
}}
AbstractCollection原始碼分析
abstractcollection抽象類提供了collection的骨架實現,collection分析請看 這裡直接看它的 是如何實現的.public abstract iterator iterator 該方法沒有實現.public abstract int size 該方法沒有實現.publi...
ThreadPoolExecutor原始碼閱讀
執行緒池解決兩個問題 一是復用執行緒,減少建立銷毀執行緒帶來系統開銷 二是限定系統資源使用邊界,避免大量執行緒消耗盡系統記憶體 適用於互不依賴,執行時間短,不需要對執行緒控制操作的執行緒 新增任務時,1.若執行緒數量小於corepoolsize,則新增執行緒執行任務 2.若執行緒數量大於等於core...
OrangePi One Android 原始碼編譯
一 系統環境搭建參照 二 lichee原始碼編譯 1.檢視help build.sh h2.配置核心 cd linux 3.4 make arch arm menuconfig 進入配置頁面,上下移動列表,空格是選擇列表,左右移動選擇退出選項 3.首次編譯執行清除 在 lichee linux3.4...