首页 > 其他 > 详细

LRU实现

时间:2021-07-24 11:43:03      阅读:31      评论:0      收藏:0      [点我收藏+]

代码如下

class LRUCache{
    private int capacity;
    private HashMap<Integer,Integer> map;
    private LinkedList<Integer> list;
    public LRUCache(int capacity){
        this.capacity = capacity;
        map = new HashMap<>();
        list=new LinkedList<>();
    }

    public int get (int key){
        if(map.containsKey(key)){
            list.remove((Integer) key);
            list.addLast(key);
            return map.get(key);
        }
        return -1;
    }

    public void put(int key, int value){
        if(map.containsKey(key)){
            list.removeFirst();
            list.addLast(key);
            map.put(key,value);
            return ;
        }
        if(list.size()==capacity){
            map.remove(list.removeFirst());
            map.put(key,value);
            list.addLast(key);
        }
        else{
            map.put(key,value);
            list.addLast(key);
        }
    }


}
public class LRU {
    class LRUCache extends LinkedHashMap<Integer,Integer>{
        private int capacity;
        
        public LRUCache(int capacity){
            super(capacity,0.75F,true);
            this.capacity=capacity;
        }
        
        public int get(int key){
            return super.getOrDefault(key,-1);
        }
        
        public void put(int key,int value){
            super.put(key,value);
        }
        
        @Override
        public boolean removeEldestEntry(Map.Entry<Integer,Integer> eldest){
            return size()>capacity;
        }
    }
}

 

LRU实现

原文:https://www.cnblogs.com/ak918xp/p/15054537.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!