相关疑难解决方法(0)

使用LinkedHashMap实现LRU缓存

我试图使用LinkedHashMap实现LRU缓存.在LinkedHashMap(http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html)的文档中,它说:

请注意,如果将键重新插入地图,则插入顺序不会受到影响.

但是,当我做以下投入时

public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    private int size;

    public static void main(String[] args) {
        LRUCache<Integer, Integer> cache = LRUCache.newInstance(2);
        cache.put(1, 1);
        cache.put(2, 2);
        cache.put(1, 1);
        cache.put(3, 3);

        System.out.println(cache);
    }

    private LRUCache(int size) {
        super(size, 0.75f, true);
        this.size = size;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > size;
    }

    public static <K, V> LRUCache<K, V> newInstance(int size) {
        return new LRUCache<K, V>(size);
    }

}
Run Code Online (Sandbox Code Playgroud)

输出是

{1=1, 3=3}
Run Code Online (Sandbox Code Playgroud)

这表明重新插入确实影响了订单.有人知道任何解释吗?

java insert linkedhashmap lru

21
推荐指数
3
解决办法
3万
查看次数

标签 统计

insert ×1

java ×1

linkedhashmap ×1

lru ×1