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

LinkedHashMap 简单实现LRU

要使用 LinkedHashMap 来实现LRU(最近最少使用)缓存,可以设置它的访问顺序为true,以便在每次访问一个元素时,将它移到最后,从而实现LRU的特性。以下是一个简单的Java示例:

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

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

    public LRUCache(int capacity) {
        super(capacity, 0.75f, true);
        MAX_CAPACITY = capacity;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > MAX_CAPACITY;
    }

    public static void main(String[] args) {
        LRUCache<Integer, String> lruCache = new LRUCache<>(3);

        lruCache.put(1, "One");
        lruCache.put(2, "Two");
        lruCache.put(3, "Three");

        System.out.println(lruCache); // 输出: {1=One, 2=Two, 3=Three}

        lruCache.get(2); // 访问元素2

        System.out.println(lruCache); // 输出: {1=One, 3=Three, 2=Two}

        lruCache.put(4, "Four"); // 添加一个新元素

        // 1最先放入
        System.out.println(lruCache); // 输出: {3=Three, 2=Two, 4=Four}

        lruCache.put(5, "Five"); // 添加一个新元素

        // 2先放入但使用了一次,3紧随其后但没有使用
        System.out.println(lruCache); // 输出: {2=Two, 4=Four, 5=Five}
    }
}

在上面的示例中,创建了一个 LRUCache 类,它扩展了 LinkedHashMap,并在构造函数中设置了访问顺序为true,以便实现LRU缓存。重写了 removeEldestEntry 方法,以控制缓存的大小,如果缓存大小超过最大容量(MAX_CAPACITY),则会移除最近最少使用的元素。


http://www.kler.cn/a/104211.html

相关文章:

  • Windows10系统安装telnet命令
  • python html(文件/url/html字符串)转pdf
  • MobileNetV3
  • 分享个包含各省、市、区的编码数据的在线静态资源脚本
  • PyCharm 安装 cx_Oracle 失败
  • c语言从入门到实战——分支和循环
  • Kubernetes (K8S)概述
  • Kubernetes技术与架构-网络 3
  • 上游服务不可用了,下游服务如何应对?
  • 3682: 【C3】【递推】台阶问题
  • 【Linux Screen命令】Linux用户注销后可长时间运行的命令行
  • React 核心与实战2023版
  • IP地址在网络安全中的关键作用
  • 机器学习之ROC与AUC
  • Linux msend.pl配置
  • mysql 基础知识
  • 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表
  • JWT的登录认证与自校验原理分析
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于 CAN 总线的车辆数据采集与远程监控系统研发
  • 一文了解GC垃圾回收