Java 继承 LinkedHashMap 实现LRU算法

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;

/**
 * 此类通过继承 LinkedHashMap 实现LRU算法(当 accessOrder 设置成 true 时)
 * 
 * @author hanshubo
 * 
 * @param <K>
 * @param <V>
 */
public class MyLinkedMap<K, V> extends LinkedHashMap<K, V> {
/**
 * 
 * @param accessOrder
 *            设置成 true 时,为最近最少使用(LRU)算法实现, 设置成 false 时,为先进入先过期
 */
public MyLinkedMap(boolean accessOrder) {
super(16, 0.75f, accessOrder);
}

/**
 * 队列最大容量,超过此容量时,会将最“旧”数据删除掉
 */
private static final int MAX_ENTRIES = 1000;

/**
 * 重写父类方法,实现LRU算法
 */
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > MAX_ENTRIES;
}

public static void main(String[] args) {

MyLinkedMap<Integer, Integer> map = new MyLinkedMap<Integer, Integer>(false);

map.put(1, 0);
map.put(2, 0);
map.put(3, 0);
map.put(4, 0);
map.put(5, 0);

map.put(2, 0);
map.put(1, 0);

for (Entry<Integer, Integer> e : map.entrySet()) {
System.out.println(e.getKey());
}

}
}