Java中LRU算法实现

背景

今天看到敖丙大佬的redis中,提到了lru算法,才知道原来Java自带的LinkedHashMap中其实自带了LRU(Least recently used,最近最少使用)算法的实现。
在这里插入图片描述
官方注释中有说明,removeEldestEntry方法在put和putAll的时候会调用,自己用idea跟踪发现也确实如此
在这里插入图片描述
因此如果面试的时候让我们手写一个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; 
    }
}

猜你喜欢

转载自blog.csdn.net/chen462488588/article/details/114639511
今日推荐