本文主要是介绍java实现一个LRU缓存算法。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//LRU(Least Recently Used)缓存算法是一种常见的缓存淘汰策略, // 它的基本思想是保留最近被访问过的数据,淘汰最久未被访问的数据。下面是一个使用Java实现的简单LRU缓存算法: import java.util.LinkedHashMap; import java.util.Map; public class Test_A29<K,V> extends LinkedHashMap<K,V> {private final int capacity; // 声明LRU缓存的容量public Test_A29(int capacity){super(capacity,0.75f,true);// 初始化LinkedHashMap,设置容量、负载因子和访问顺序为truethis.capacity=capacity;//初始化缓存容量}// 重写removeEldestEntry方法,实现LRU缓存的淘汰策略@Overrideprotected boolean removeEldestEntry(Map.Entry<K, V> eldest) {return size() > capacity; // 判断是否需要移除最老的条目}// main方法,程序入口点public static void main(String[] args) {Test_A29<Integer, String> cache = new Test_A29<>(2); // 创建Test_A29对象,容量为2cache.put(1, "One"); // 将键值对(1, "One")放入缓存cache.put(2, "Two"); // 将键值对(2, "Two")放入缓存System.out.println(cache.get(1)); // 获取键1对应的值,并打印System.out.println(cache.get(2)); // 获取键2对应的值,并打印cache.put(3, "Three"); // 将键值对(3, "Three")放入缓存,触发LRU淘汰最老条目System.out.println(cache.get(1)); // 获取键1对应的值(已淘汰),打印nullSystem.out.println(cache.get(2)); // 获取键2对应的值,仍在缓存中,打印"Two"System.out.println(cache.get(3)); // 获取键3对应的值,打印"Three"} }
这篇关于java实现一个LRU缓存算法。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!