LRU

import java.lang.*;
import java.util.*;

class LRUCache{
    int cap;
    LinkedHashMap<Integer, Integer> cache = new LinkedHashMap<>();
    
    public LRUCache(int capacity){
        cap = capacity;
    }
    
    public int get(int key){
        if(!cache.containsKey(key)){
            return - 1;
        }
        makeRecently(key);
        return cache.get(key);
    }
    
    public void put(int key, int val){
        if(cache.containsKey(key)){
            cache.put(key, val);
            makeRecently(key);
            return;
        }
        if(cache.size() >= this.cap){
            int oldestKey = cache.keySet().iterator().next();
            cache.remove(oldestKey);
        }
        cache.put(key, val);
    }
    
    private void makeRecently(int key){
        int val = cache.get(key);
        cache.remove(key);
        cache.put(key, val);
    }
}
posted @ 2021-11-20 16:27  xmubaron  阅读(45)  评论(0)    收藏  举报