LRU Cache
来源:互联网 发布:网络小精灵 编辑:程序博客网 时间:2024/05/16 01:30
public class LRUCache { private class Node { int key; int value; Node prev; Node next; public Node (int key, int value) { this.key = key; this.value = value; } } int size = 0; Node head = new Node(-1, -1); Node tail = new Node(-1, -1); Map<Integer, Node> map = new HashMap<>(); public LRUCache(int capacity) { size = capacity; head.next = tail; head.prev = tail; tail.next = head; tail.prev = head; } public int get(int key) { if (!map.containsKey(key)) { return -1; } Node node = map.get(key); Node prevN = node.prev; Node nextN = node.next; prevN.next = nextN; nextN.prev = prevN; moveToTail(node); return node.value; } public void set(int key, int value) { if (get(key) != -1) { Node node = map.get(key); node.value = value; return; } Node node = new Node(key, value); if (map.size() == size) { Node deletedNode = head.next; Node prevD = deletedNode.prev; Node nextD = deletedNode.next; prevD.next = nextD; nextD.prev = prevD; map.remove(deletedNode.key); } map.put(key, node); moveToTail(node); } private void moveToTail(Node node) { node.next = tail; node.prev = tail.prev; tail.prev.next = node; tail.prev = node; }}
0 0
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- lru cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- NDK开发-Android Studio+gradle-experimental开发ndk
- 剑指Offer java代码
- Insert Interval
- HDU1996 汉诺塔VI
- LRU Cache
- LRU Cache
- 剑指offer系列-T27把二元查找树转变成排序的双向链表
- UUID数据结构和使用方法
- Binary Tree Vertical Order Traversal
- Wildcard Matching
- 证据理论
- leetcode---Gray Code
- iOS 【iOS中常用的几种库 .a & .framework】
- Java轻量级组件和重量级组件