Jav使用自带JDK模拟LRU算法

public class LRULinkedHashMap extends java.util.LinkedHashMap {

    public final int maxCapacity;
    public LRULinkedHashMap(int capacity){
        this.maxCapacity=capacity;
    }
    @Override
    protected boolean removeEldestEntry(java.util.Map.Entry eldest) {
        // TODO Auto-generated method stub
        return size()>maxCapacity;
    }

    public int get(int key){
        if(super.containsKey(key)){
            Integer value=(Integer) super.remove(key);
            set(key,value);
            return value;
        }
        return -1;
    }
    public void set(int key,int value){
        if(super.containsKey(key)){
            super.remove(key);
        }
        super.put(key, value);
    }
    public static void main(String[] args) {
        LRULinkedHashMap main2=new LRULinkedHashMap(2);
        main2.set(2, 1);
        main2.set(1, 1);
        main2.set(2, 3);
        main2.set(4, 1);
        //System.out.println(main2.get(2));
        /*Set<Map.Entry<Integer,Integer>> set=main2.entrySet();
        Iterator<Map.Entry<Integer,Integer>> it=set.iterator();
        while (it.hasNext()) {
            Map.Entry<java.lang.Integer, java.lang.Integer> entry = (Map.Entry<java.lang.Integer, java.lang.Integer>) it
                    .next();
            System.out.println(entry.getKey()+" "+entry.getValue());
            
        }*/
        System.out.println(main2.get(1));
        System.out.println(main2.get(2));
    }
原文地址:https://www.cnblogs.com/csxf/p/3638759.html