开发者社区> 问答> 正文

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

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

展开
收起
冲冲冲c 2024-06-21 20:14:57 8 0
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
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载