leetcode 146. LRU Cache 需要深入学习Java的Map的内部实现
来源:互联网 发布:js文字超出显示省略号 编辑:程序博客网 时间:2024/06/01 10:17
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and put.
get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.
put(key, value) - Set or insert the value if the key is not already present. When the cache reached its capacity, it should invalidate the least recently used item before inserting a new item.
Follow up:
Could you do both operations in O(1) time complexity?
Example:
LRUCache cache = new LRUCache( 2 /* capacity */ );
cache.put(1, 1);
cache.put(2, 2);
cache.get(1); // returns 1
cache.put(3, 3); // evicts key 2
cache.get(2); // returns -1 (not found)
cache.put(4, 4); // evicts key 1
cache.get(1); // returns -1 (not found)
cache.get(3); // returns 3
cache.get(4); // returns 4
我也是网上参考的教程。
强烈建议学习深入Java集合学习系列:HashMap的实现原理和深入Java集合学习系列:LinkedHashMap的实现原理。
代码如下:
import java.util.HashMap;import java.util.LinkedHashMap;/* * http://blog.csdn.net/HE19930303/article/details/51315263 * * http://zhangshixi.iteye.com/blog/673789 * * http://zhangshixi.iteye.com/blog/672697 * * 这个题值得学习Java中的HashMap和LinkedHashMap * */public class LRUCache extends LinkedHashMap<Integer,Integer>{ private int maxcapacity; public LRUCache(int capacity) { super(capacity,0.75f,true); this.maxcapacity=capacity; } public int get(int key) { Integer vaule=super.get(key); if(vaule==null)return -1; else return vaule; } public void set(int key, int value) { super.put(key,value); } protected boolean removeEldestEntry(Map.Entry<Integer,Integer> eldest) { return size()>maxcapacity; }}/** * Your LRUCache object will be instantiated and called as such: * LRUCache obj = new LRUCache(capacity); * int param_1 = obj.get(key); * obj.put(key,value); */
- leetcode 146. LRU Cache 需要深入学习Java的Map的内部实现
- LeetCode LRU Cache (Java实现)
- LRU cache的实现
- LRU Cache的实现
- LRU Cache的实现
- LRU Cache的实现
- Leetcode——146. LRU Cache 一个优雅的LRU的C++实现
- java实现简单的LRU Cache
- [LeetCode] 146. LRU Cache java
- LRU的cache的实现
- [Leetcode] LRU Cache (Java)
- [leetCode] LRU Cache (Java)
- LeetCode|LRU Cache-java
- LRU cache的简单实现
- LRU Cache的一种实现
- LRU cache的另一种实现
- LRU Cache的C++实现
- LRU Cache的简单实现
- Pythonic Data Structures and Algorithms(Array 3)
- Apache Beam 快速入门(Python 版)
- web开发之MVC设计模式
- HTML中引用CSS的几种方法
- 前端缓存
- leetcode 146. LRU Cache 需要深入学习Java的Map的内部实现
- 信息收集
- 【大型分布式网站架构设计与实践】-系统稳定性
- 高并发下的程序设计,高并发下的数据库设计
- 深度网络里白化跟BN的使用区别!!
- 为何大数据在当今世界如此重要?
- 类实现Serializable,作用和好处
- ie8兼容问题(一) getElementsByClassName
- struts2为什么用拦截器?有什么好处?起什么作用?