LRU Cache
来源:互联网 发布:蜀山缥缈录捏脸数据 编辑:程序博客网 时间:2024/06/07 06:11
定义的Node中的key是有用的:用于从map中删掉the least used Node。
public class LRUCache { private class Node{ Node prev; Node next; int value; int key; public Node(int key, int value) { this.key = key; this.value = value; this.prev = null; this.next = null; } } private int capacity; private HashMap<Integer, Node> map = new HashMap<Integer, Node>(); private Node head = new Node(-1, -1); private Node tail = new Node(-1, -1); public LRUCache(int capacity) { this.capacity = capacity; tail.prev = head; head.next = tail; head.prev = tail; tail.next = head; } public int get(int key) { if (!map.containsKey(key)) { return -1; } Node node = map.get(key); node.prev.next = node.next; node.next.prev = node.prev; moveToTail(node); return node.value; } public void set(int key, int value) { if (get(key) != -1) { map.get(key).value = value; return; } if (capacity == map.size()) { Node removedNode = head.next; map.remove(removedNode.key); head.next = removedNode.next; removedNode.next.prev = head; } Node node = new Node(key, value); moveToTail(node); map.put(key, 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
- 单链表的实现与操作
- 练习Android大图轮播效果的实现-大致布局
- HTTPS的七个误解
- timestamp、date、String之间的转换
- matlab-线性代数 创建全1矩阵
- LRU Cache
- ThoughtWorks(中国)程序员读书雷达
- matlab-高数 对已知矩阵取上三角矩阵
- 后缀数组
- matlab-线性代数 对已知矩阵取下三角矩阵
- 读《理性乐观派》
- sphinx 源码阅读之json, hash table配置分析器
- matlab-线性代数 根据二次型写矩阵
- Tomcat学习-2