List实现LRU
public class LRUCache {
int cap;
LinkedHashMap<Integer, Integer> linkedHashMap = new LinkedHashMap<>();
LRUCache(int cap){
this.cap = cap;
}
public int get(int key) {
if (!linkedHashMap.containsKey(key)) {
return -1;
}
makeUse(key);
return linkedHashMap.get(key);
}
public void put(int key, int val) {
if (linkedHashMap.containsKey(key)) {
linkedHashMap.put(key, val);
makeUse(key);
return;
}
if (linkedHashMap.size() >= cap) {
Integer next = linkedHashMap.keySet().iterator().next();
linkedHashMap.remove(next);
}
linkedHashMap.put(key, val);
}
public void makeUse(int key) {
//删除key
Integer remove = linkedHashMap.remove(key);
linkedHashMap.put(key, remove);
}
}
每天坚持,终会抵达!

浙公网安备 33010602011771号