LRU算法实现

一、基于LinkedHashMap实现

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

public class LRUCache<K, V> extends LinkedHashMap<K, V> {

    private final int CACHE_SIZE;

    /**
     * 
     * @param cacheSize 缓存大小
     */
    // true 表示让 linkedHashMap 按照访问顺序来进行排序,最近访问的放在头部,最老访问的放在尾部。
    public LRUCache(int cacheSize){
        super((int)Math.ceil(cacheSize /0.75) + 1, 0.75f, true);
        CACHE_SIZE = cacheSize;
    }

    @Override
    // 当 map中的数据量大于指定的缓存个数的时候,就自动删除最老的数据。
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest){
        return size() > CACHE_SIZE;
    }
}

 

二、来自apache common-collections框架LRUMap的实现

https://blog.csdn.net/statckoverflow/article/details/18908647

上一篇:java – 为什么我们在LinkedHashMap中需要hashcode和bucket概念


下一篇:LInkedHashMap 和 HashMap 的区别