中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何用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

承德县| 石棉县| 波密县| 中超| 西盟| 长武县| 双牌县| 白山市| 武山县| 绍兴县| 天等县| 勐海县| 承德市| 襄垣县| 青田县| 图们市| 宁津县| 无为县| 鹤壁市| 安徽省| 开原市| 南京市| 大宁县| 若羌县| 岑巩县| 万安县| 宽城| 博白县| 盘锦市| 屏东市| 平江县| 黄石市| 化隆| 新晃| 惠来县| 大理市| 资讯| 湘潭县| 黄龙县| 赣榆县| 克东县|