LRU演算法四種實現方式介紹

小樓昨夜又西風發表於2019-03-18

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
顧名思義,LRUCache就是基於LRU演算法的Cache(快取),這個類繼承自LinkedHashMap,而類中看到沒有什麼特別的方法,這說明LRUCache實現快取LRU功能都是源自LinkedHashMap的。LinkedHashMap可以實現LRU演算法的快取基於兩點:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
void recordAccess(HashMap<K,V> m) 這個方法就是我們一開始說的,accessOrder為true時,就是使用的訪問順序,訪問次數最少到訪問次數最多,此時要做特殊處理。處理機制就是訪問了一次,就將自己往後移一位,這裡就是先將自己刪除了,然後在把自己新增到連結串列尾部,這樣,近期訪問的少的就在連結串列的開始,最近訪問的元素就會在連結串列的末尾。如果為false。那麼預設就是插入順序,直接通過連結串列的特點就能依次找到插入元素,不用做特殊處理。

八、程式碼演示LinkedHashMap按照訪問順序排序的效果

最後程式碼演示一下LinkedList按照訪問順序排序的效果,驗證一下上一部分LinkedHashMap的LRU功能:
在這裡插入圖片描述
在這裡插入圖片描述
更多參考連結:https://blog.csdn.net/elricboa/article/details/78847305

相關文章