技术文摘
10行Java代码实现LRU缓存
2024-12-31 17:08:39 小编
10行Java代码实现LRU缓存
在Java编程中,LRU(Least Recently Used)缓存是一种常见的数据结构,用于存储和管理数据。它的核心思想是:当缓存达到容量上限时,优先淘汰最近最少使用的数据。本文将展示如何用简洁的10行Java代码实现一个简单的LRU缓存。
我们需要使用Java的 LinkedHashMap 来实现LRU缓存。LinkedHashMap 是一个有序的哈希表,它可以按照插入顺序或者访问顺序来维护元素。对于LRU缓存,我们需要按照访问顺序来维护元素。
以下是实现LRU缓存的10行Java代码:
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private final int capacity;
public LRUCache(int capacity) {
super(capacity, 0.75f, true);
this.capacity = capacity;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > capacity;
}
}
在这段代码中,我们定义了一个名为 LRUCache 的类,它继承自 LinkedHashMap。构造函数接受一个参数 capacity,用于指定缓存的容量。在构造函数中,我们调用了父类的构造函数,并将 accessOrder 参数设置为 true,表示按照访问顺序来维护元素。
removeEldestEntry 方法是 LinkedHashMap 中的一个钩子方法,用于决定是否删除最老的元素。在我们的实现中,当缓存的大小超过容量时,就会删除最老的元素。
使用这个 LRUCache 非常简单,例如:
LRUCache<Integer, String> cache = new LRUCache<>(3);
cache.put(1, "one");
cache.put(2, "two");
cache.put(3, "three");
cache.get(1);
cache.put(4, "four");
System.out.println(cache);
这段代码创建了一个容量为3的LRU缓存,向缓存中添加了3个元素,然后访问了其中一个元素,再添加一个新元素。最后,打印出缓存的内容。
通过这10行简单的Java代码,我们就实现了一个基本的LRU缓存。当然,实际应用中可能需要根据具体需求进行更多的优化和扩展。
- 一言不合即重构
- 生产环境 MQ 集群消费延迟的诡异排查
- 现代 CSS 样式重置的卓越实践
- 死锁面试的所有内容都在这
- 我为何含泪告别 CSS-in-JS
- Go 为何特殊?不用 yyyy-mm-dd,却要 2006-01-02 15:04:05......
- 阅读源码攻克项目难题:GToken 替代 JWT 达成 SSO 单点登录
- 30 分钟学会用 NodeJs 开发图床应用
- 漫画:编程为何既难又易?
- SpringBoot 3.0 正式发布 新变化在此
- 学习 C++的原因
- 2023 年必关注的 14 个 Web 开发趋势
- ReactJS 开发人员必备的 12 项基本技能
- 11 款前端性能测试必备工具
- 细数 Go 的出色应用场景