Java实现LRU算法

    xiaoxiao2024-11-28  6

    用Java实现最近最少使用算法,代码如下:

    import java.util.LinkedHashMap; import java.util.Map; /** * LRU (Least Recently Used) */ public class LRUCache<K, V> extends LinkedHashMap<K, V> { private static final long serialVersionUID = 1L; //缓存大小 private int cacheSize; public LRUCache(int cacheSize) { //第三个参数true是关键 super(10, 0.75f, true); this.cacheSize = cacheSize; } /** * 缓存是否已满 */ @Override protected boolean removeEldestEntry(Map.Entry<K, V> eldest) { boolean r = size() > cacheSize; if(r){ System.out.println("清除缓存key:"+eldest.getKey()); } return r; } //测试 public static void main(String[] args) { LRUCache<String, String> cache = new LRUCache<String, String>(5); cache.put("1", "1"); cache.put("2", "2"); cache.put("3", "3"); cache.put("4", "4"); cache.put("5", "5"); System.out.println("初始化:"); System.out.println(cache.keySet()); System.out.println("访问3:"); cache.get("3"); System.out.println(cache.keySet()); System.out.println("访问2:"); cache.get("2"); System.out.println(cache.keySet()); System.out.println("增加数据6,7:"); cache.put("6", "6"); cache.put("7", "7"); System.out.println(cache.keySet()); } } 运行结果如下:

    初始化: [1, 2, 3, 4, 5] 访问3: [1, 2, 4, 5, 3] 访问2: [1, 4, 5, 3, 2] 增加数据6,7: 清除缓存key:1 清除缓存key:4 [5, 3, 2, 6, 7]

    转载请注明原文地址: https://ju.6miu.com/read-1294048.html
    最新回复(0)