package com.bingo.frame;
import java.util.LinkedHashMap;
/**
* a.基于LinkedHashMap实现LRU(最近最少使用)淘汰算法
* @author bingo
*/
public class Test {
class SimpleLruCache extends LinkedHashMap<Object, Object> {
private int maxCap;
public SimpleLruCache(int maxCap) {
//阻止扩容: (int)(maxCap/0.75+1)
super((int)(maxCap/0.75+1), 0.75f, true);//true:记录访问顺序, false:记录插入顺序
this.maxCap = maxCap;
}
/**
* 返回值通知map对象是否移除元素
* 1. true移除
* 2. false不移除
* 3. 此方法在put方法执行时调用
*/
@Override
protected boolean removeEldestEntry(java.util.Map.Entry<Object, Object> eldest) {
if (size() > maxCap) {
return true;
}
return false;
}
}
public static void main(String[] args) {
SimpleLruCache lruCache = new Test().new SimpleLruCache(5);
lruCache.put("A", 100);
lruCache.put("B", 100);
lruCache.put("C", 100);
lruCache.put("D", 100);
lruCache.put("E", 100);
基于LinkedHashMap实现LRU(最近最少使用)淘汰算法
最新推荐文章于 2024-04-22 04:45:47 发布