LRU Cache
来源:互联网 发布:淘宝不搜血滴子上一句 编辑:程序博客网 时间:2024/06/16 12:46
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 prev = node.prev; Node next = node.next; prev.next = next; next.prev = prev; 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 nextNode = deletedNode.next; head.next = nextNode; nextNode.prev = head; 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
- 生成树的计数 模板 Matrix-Tree定理
- #368 (Div. 2) C. Pythagorean Triples
- Expression Add Operators
- 淘宝如何跨域获取Cookie分析
- hdu3461Code Lock
- LRU Cache
- ImageButton属性
- 大数据竞赛平台——Kaggle 入门篇
- getPath、getAbsolutePath区别
- Python3 基础总结
- js 深复制(深拷贝)和浅复制(浅拷贝)的区别
- Lowest Common Ancestor of a Binary Tree
- 单点登录三个方法及原理:共享Session、基于OpenId的单点登录、基于Cookie的OpenId存储方案
- SAS硬盘和SATA硬盘最大的区别是什么?