技术文摘
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缓存。当然,实际应用中可能需要根据具体需求进行更多的优化和扩展。
- 代码不停 | Google 助力优质移动端用户体验打造
- CommonJS 为何致使打包后体积变大?
- 查看运行中 Java Class 源码的三个诀窍
- 十年编程经验之精华:三点技巧提升代码水平
- 深入剖析 JavaScript 中的模块、Import 与 Export
- Python 中的多进程:Join 方法、进程锁与进程间通信
- 不懂 Docker?一个故事让你秒懂!
- 何时使用 @property 为宜
- GitHub 重新上架热门开源项目 YouTube-dl 捍卫开发者,底气何来?
- 图片懒加载:由简至繁
- 多线程环境中 Synchronized 应否使用
- 教妹妹学习 Java:Java 命名规范
- 漫画 | 程序员:踢皮球必备技能!
- Java 中编写 AOP 险遭开除
- 虚拟现实对医疗体验的优化作用