java实现LRU缓存

1.自定义双向链表的形式

原理就是通过维护一个双向链表,每次操作的时候都把操作的节点放到头部(get / set)。
不说废话直接上代码

 public static class Node {
   

        public Node(String key, String value){
   
            this.value = value;
            this.key = key;
        }

        Node pre;
        Node next;
        String key;
        String value;
    }

    public static class LRUCache{
   

        Node head;
        Node tail;
        int capacity;
        int size;

        public LRUCache(int capacity){
   
            this.capacity = capacity;
        }

        public void setValue(String key, String value){
   
            if(size >= capacity){
   
                Node nowTail = tail;
                Node pre = nowTail.pre;
                pre.next = null;
                tail.pre = null;
                --size;
            }
            Node node = new Node(key, value);
            swapHead(node);
            swapTail(node)

你可能感兴趣的:(java,java,缓存,lru)