可用Java的LinkHashMap来实现
    或者使用map+queue

    1. class LRUCache {
    2. HashMap<Integer,Integer> map = new HashMap<>();
    3. Deque<Integer> queue = new ArrayDeque<>();
    4. int limit = 0;
    5. public LRUCache(int capacity) {
    6. limit = capacity;
    7. }
    8. public int get(int key) {
    9. queue.remove(key);
    10. queue.add(key);
    11. return map.getOrDefault(key, -1);
    12. }
    13. public void put(int key, int value) {
    14. if (map.containsKey(key)){
    15. queue.remove(key);
    16. queue.add(key);
    17. map.put(key,value);
    18. return;
    19. }
    20. if (map.size() >= limit){
    21. map.remove(queue.pollFirst());
    22. }else {
    23. queue.add(key);
    24. }
    25. map.put(key,value);
    26. }
    27. }

    LinkedHashMap继承了HashMap
    通过在底层维护一个双向队列来实现数据的有序存放
    有两种顺序,一种是访问顺序,一种是插入顺序,通过访问顺序可以实现LRU
    image.png