实现lru 缓存
发布时间:2020-05-24 21:09:43 所属栏目:Java 来源:互联网
导读:实现lru 缓存
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 LRU CacheShow Tags public class LRUCache {
static class Node {
int key;
int value;
@Override
public String toString() {
return "Node{" +
"key=" + key +
",value=" + value +
'}';
}
}
static private LinkedList<Node> cache;
static private int cap;
static private Node indexMap[];
public LRUCache(int capacity) {
cache = new LinkedList<Node>();
indexMap = new Node[100000];
cap = capacity;
}
static public boolean isFull() {
return cache.size() == cap;
}
static public Node find(int key) {
if (cache.isEmpty())
return null;
Node tar = null;
if ((tar = indexMap[key]) == null)
return null;
cache.remove(tar);
cache.addFirst(tar);
return tar;
}
public int get(int key) {
Node node = find(key);
if (node == null) {
return -1;
}
return node.value;
}
public void set(int key,int value) {
Node node = null;
if ((node = find(key)) != null) {
node.value = value;
return;
}
//not find the element
if (isFull()) {
indexMap[cache.getLast().key] = null;
cache.removeLast();
}
Node newNode = new Node();
newNode.key = key;
newNode.value = value;
cache.addFirst(newNode);
indexMap[key] = newNode;
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
