当前位置: 首页 > news >正文

LRU java 实现方式

文章目录

      • **方式 1:直接使用 `LinkedHashMap`(简洁版)**
      • **方式 2:手动实现哈希表 + 双向链表(底层原理版)**
        • **步骤 1:定义双向链表节点**
        • **步骤 2:构建 LRU 缓存结构**
      • **性能对比**
      • **扩展:线程安全 LRU 缓存**
      • **总结**

在 Java 中实现 LRU(Least Recently Used)缓存淘汰算法,核心是通过 哈希表(快速访问)双向链表(维护访问顺序) 的组合,保证 O(1) 时间复杂度的 getput 操作。以下是两种典型实现方式:


方式 1:直接使用 LinkedHashMap(简洁版)

LinkedHashMap 内部已维护了插入顺序或访问顺序的双向链表,通过重写 removeEldestEntry 方法即可快速实现 LRU。

import java.util.LinkedHashMap;
import java.util.Map;

public class LRUCache<K, V> extends LinkedHashMap<K, V> {
   
    private final int capacity;

    public LRUCache(int capacity) {
   
        // accessOrder=true: 按访问顺序排序(最近访问的放链表尾部)
        super(capacity, 0.75f, true);
        this.capacity = capacity;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
   
        // 当容量超过阈值时,自动删除最旧(链表头部)的条目
        return size() > capacity;
    }

    public static void main(String[] args) {
   
        LRUCache<Integer, String> cache = new LRUCache<>(2);
        cache.put(1, "A");
        cache.put(2, "B");
        cache.get(1);       // 访问键1,使其成为最近使用
        cache.put(3, "C");  // 触发淘汰,键2被移除
        System.out.println(cache); // 输出: {1=A, 3=C}
    }
}

方式 2:手动实现哈希表 + 双向链表(底层原理版)

更底层地模拟 LRU 机制,适合需要深度定制或理解原理的场景。

步骤 1:定义双向链表节点

                

相关文章:

  • 计算机组成原理(哈工大,会持续更新)
  • Zookeeper的典型应用场景?
  • MFC案例:利用CFileDialog类选择多个文件的实验
  • Themeleaf复用功能
  • Google A2A协议解析:构建分布式异构多Agent系统
  • 深入了解 UI 咨询公司:数字化时代的品牌助推器
  • 游戏引擎学习第222天
  • 【文献分享】因果推断经验研究中的中介效应与调节效应
  • [题解] Educational Codeforces Round 168 (Rated for Div. 2) E - level up
  • pycharm已有python3.7,如何新增Run Configurations中的Python interpreter为python 3.9
  • 【Linux篇】深入理解文件系统:从基础概念到 ext2 文件系统的应用与解析
  • 深度学习(第一集)
  • 5.1、深度剖析 docker run 命令:原理阐释与数据持久化实践探究
  • vp 2023 icpc 合肥 解题补题记录 [F E J G]
  • 什么是 React Router?如何使用?
  • 7.渐入佳境 -- 优雅的断开套接字连接
  • [Spark]深入解密Spark SQL源码:Catalyst框架如何优雅地解析你的SQL
  • 具身导航中的视觉语言注意力蒸馏!Vi-LAD:实现动态环境中的社会意识机器人导航
  • vue3 ts 自定义指令 app.directive
  • 5G网络下客户端数据业务掉线频繁
  • 铁肩担道义,历史鉴未来——中共中央政治局委员、外交部长王毅谈习近平主席对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典
  • 昆明一学校门外小吃摊占满人行道,城管:会在重点时段加强巡查处置
  • 马上评丨全民定制公交,打开城市出行想象空间
  • 被取消总统候选人资格,金文洙:将采取政治法律措施讨回公道
  • 保利42.41亿元竞得上海杨浦东外滩一地块,成交楼面单价超8万元
  • 上海楼市“银四”兑现:新房市场高端改善领跑,二手房量价企稳回升