亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Java代碼實現最近最少使用緩存

發布時間:2021-11-24 13:58:36 來源:億速云 閱讀:123 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關如何用Java代碼實現最近最少使用緩存,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

怎么實現一個最近最少使用(LRU)的緩存。緩存可以通過哈希表來實現,然而為這個緩存增加大小限制會變成另一個有意思的問題。現在我們看一下怎么實現。

最近最少使用緩存的回收

為了實現緩存回收,我們需要很容易做到:

  • 查詢出最近最晚使用的項

  • 給最近使用的項做一個標記

鏈表可以實現這兩個操作。檢測最近最少使用的項只需要返回鏈表的尾部。標記一項為最近使用的項只需要從當前位置移除,然后將該項放置到頭部。比較困難的事情是怎么快速的在鏈表中找到該項。

哈希表的幫助

看一下我們工具箱中的數據結構,哈希表可以在(消耗)常量的時間內索引到某個對象。如果我們創建一個形如key->鏈表節點的哈希表,我們就能夠在常量時間內找到最近使用的節點。更甚的是,我們也能夠在常量時間內判斷節點的是否存在(或不存在);

找到這個節點后,我們就能將這個節點移動到鏈表的最前端,標記為最近使用的項了。

Java的捷徑

據我所知,很少有一種編程語言的標準庫中有通用的數據結構能提供上述功能的。這是一種混合的數據結構,我們需要在哈希表的基礎上建立一個鏈表。但是 Java已經為我們提供了這種形式的數據結構-LinkedHashMap!它甚至提供可覆蓋回收策略的方法。需要我們注意的事情是,改鏈表的順序是插入的順序,而不是訪問的順序。但是,有一個構造函數提供了一個選項,可以使用訪問的順序(見文檔)。

無需多說:

import java.util.LinkedHashMap; import java.util.Map;  public LRUCache<K, V> extends LinkedHashMap<K, V> {   private int cacheSize;    public LRUCache(int cacheSize) {     super(16, 0.75, true);     this.cacheSize = cacheSize;   }    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {     return size() >= cacheSize;   } }

上述就是小編為大家分享的如何用Java代碼實現最近最少使用緩存了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿图什市| 东乡| 高要市| 隆林| 平武县| 平罗县| 广东省| 邵东县| 辽阳县| 波密县| 双辽市| 定边县| 林口县| 黄大仙区| 邵阳市| 林西县| 保康县| 兴义市| 扬中市| 麦盖提县| 邢台市| 花莲市| 亳州市| 崇义县| 靖江市| 准格尔旗| 吉林市| 进贤县| 凤阳县| 杭锦后旗| 建昌县| 西宁市| 清远市| 乌拉特中旗| 丰原市| 西乡县| 铅山县| 镇坪县| 乌兰察布市| 噶尔县| 新巴尔虎左旗|