技术文摘
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缓存。当然,实际应用中可能需要根据具体需求进行更多的优化和扩展。
- 前端多文件编译的实现
- Nacos 中配置 Map 类型的缺陷
- Kaggle 大神所采用的语言、框架及模型统计详情
- Go 语言之父谈泛型
- JVM 之 Java 对象创建过程:从入门到放弃
- 降本增效!12 个必试的 Python 工具包!
- Python 数据清洗的完备指引
- 微服务转型的注意事项超乎想象之多
- 代码 Review 竟出问题!
- 小学生在 B 站讲算法 网友:我只会阿巴阿巴
- 30G 超大数据文件怎样在一周内导入生产数据库
- Nature:MIT 团队打造全新声感织物 这件“毛衣”能听见你的心跳
- .NET 中密封类的性能优势知多少?
- 私有属性的六种实现途径,你知晓几种?
- 善用单例设计模式,代码性能猛增 300%