• 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}
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

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

  • 相关阅读:
    经典算法试题(一)
    [附源码]SSM计算机毕业设计火车售票系统论文JAVA
    SSM+图书馆电子文件资源管理 毕业设计-附源码191614
    node多版本控制
    kafka
    css实现不规则图片文字环绕效果
    浮点数算法:争议和限制
    mysql备份与恢复
    Java检测网络是否正常通讯
    JVM高频知识合集(面试)【1】
  • 原文地址:https://blog.csdn.net/qq_43116031/article/details/133987317