开发者社区 问答 正文

如何使用LinkedHashMap实现一个简单的LRU(最近最少使用)缓存?

如何使用LinkedHashMap实现一个简单的LRU(最近最少使用)缓存?

展开
收起
冲冲冲c 2024-06-21 20:14:57 33 分享 版权
1 条回答
写回答
取消 提交回答
  • 可以通过继承LinkedHashMap并实现其removeEldestEntry方法来实现一个简单的LRU缓存。示例代码如下:

    public class LRUCache extends LinkedHashMap<Object, Object> { 
    private int maxSize; 
    
    public LRUCache(int maxSize) { 
    super(maxSize + 1, 1.0f, true); // 第三个参数设为true,使LinkedHashMap按访问顺序排序 
    this.maxSize = maxSize; 
    } 
    
    @Override 
    protected boolean removeEldestEntry(Map.Entry<Object, Object> eldest) { 
    return size() > maxSize; // 当Map中的数据量大于指定的缓存个数时,就自动删除最老的数据 
    } 
    }
    
    2024-06-21 21:15:23
    赞同 展开评论
问答分类:
问答地址: