可用Java的LinkHashMap来实现
或者使用map+queue
class LRUCache {HashMap<Integer,Integer> map = new HashMap<>();Deque<Integer> queue = new ArrayDeque<>();int limit = 0;public LRUCache(int capacity) {limit = capacity;}public int get(int key) {queue.remove(key);queue.add(key);return map.getOrDefault(key, -1);}public void put(int key, int value) {if (map.containsKey(key)){queue.remove(key);queue.add(key);map.put(key,value);return;}if (map.size() >= limit){map.remove(queue.pollFirst());}else {queue.add(key);}map.put(key,value);}}
LinkedHashMap继承了HashMap
通过在底层维护一个双向队列来实现数据的有序存放
有两种顺序,一种是访问顺序,一种是插入顺序,通过访问顺序可以实现LRU
