技术文摘
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缓存。当然,实际应用中可能需要根据具体需求进行更多的优化和扩展。
- 分布式环境下生成数据库唯一 ID 的解决办法
- MySQL慢查询快照自动记录脚本
- MySQL 中 merge、union 与 merge sort_union 的差异
- Mac 利用 brew 安装 mysql
- 让 mysqldump 实现并发导出导入的神奇方法
- ORACLE利用SPM为SQL语句添加HINT
- MySQL 安全测试
- MySQL SQL命令快速查询
- MySQL索引的最佳实践方法
- CentOS 6 下安装 MySQL 客户端
- 深入了解MySQL InnoDB索引与优化策略
- 怎样获取Mysql每个分组里的第N条记录
- SQL语句实现同台服务器不同库两张表的联合查询
- MySQL 数据库基础操作与在 Node 中的应用
- MySQL外键设置:Cascade、NO ACTION、Restrict、SET NULL