技术文摘
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缓存。当然,实际应用中可能需要根据具体需求进行更多的优化和扩展。
- 使用 `` 标签获取 offsetWidth 属性为何会报错
- 提升JavaScript开发效率的实用技巧
- JavaScript 闭包:函数执行后变量仍可用的原因
- 元素有宽度却出现 offsetWidth 报错的原因
- Vue中渲染包含HTML标签字符串的方法
- JavaScript闭包:函数执行完变量仍可访问的原因
- uniapp图片加载显示灰块问题排查方法
- 代码读取offsetWidth属性报错原因
- Uniapp Image组件显示灰块 排查base64代码错误方法
- Flex布局下子元素设width: 0;与flex: 1;防止内容被挤压原因
- CSS clip-path 属性绘制外边框连接等腰梯形的方法
- Vue项目里样式穿透失效:common.css文件中deep为何失灵
- Vue中正确转换后台返回HTML标记为HTML格式的方法
- CSS定位实现手机端页面可下拉且导航栏固定不变的方法
- 利用JavaScript代码控制按钮实现动态表格操作的方法