LinkedHashMap原始碼解析

2021-07-29 10:59:44 字數 774 閱讀 7615

主要成員變數:

private transient entryheader;

主要方法

public v put(k key, v value)

}modcount++;

addentry(hash, key, value, i);//新增資料的真正會呼叫這個方法

return null;}

void addentry(int hash, k key, v value, int bucketindex) else }

protected boolean removeeldestentry(map.entryeldest)

從這裡我們可以容易的給linkedhashmap加上大小限制

private static linkedhashmapdata = new linkedhashmap()

return false;

}};這裡表示大小大於5時會呼叫刪除方法

補充:entry的原始碼分析

static class entryimplements map.entry

主要成員變數:

final k key;   

v value;

entrynext;

final int hash;

分析可知它的結構使他的鍵無法改變,值可以改變。並且他的next儲存了下一物件的引用使得可以遍歷所有的資料

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...