Java中LRU算法实现

背景

今天看到敖丙大佬的redis中,提到了lru算法,才知道原来Java自带的LinkedHashMap中其实自带了LRU(Least recently used,最近最少使用)算法的实现。
Java中LRU算法实现
官方注释中有说明,removeEldestEntry方法在put和putAll的时候会调用,自己用idea跟踪发现也确实如此
Java中LRU算法实现
因此如果面试的时候让我们手写一个LRU算法,可以直接基于LinkedHashMap去实现,主要是重写removeEldestEntry

class LRUCache extends LinkedHashMap<Integer, Integer>{
    private int capacity;
    
    public LRUCache(int capacity) {
        super(capacity, 0.75F, true);
        this.capacity = capacity;
    }
    @Override
    protected boolean removeEldestEntry(Map.Entry<Integer, Integer> eldest) {
        return size() > capacity; 
    }
}

上一篇:Java高级工程师面试题视频,从理论到实践!


下一篇:Java实现抽象工厂模式,极致干货