Skip to content

Commit 974a350

Browse files
committed
✨ Introducing new features.LRU cache
1 parent 959eb5b commit 974a350

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package com.crossoverjie.actual;
2+
3+
import com.sun.scenario.effect.impl.prism.PrImage;
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
import java.util.concurrent.LinkedBlockingQueue;
8+
9+
/**
10+
* Function:
11+
*
12+
* @author crossoverJie
13+
* Date: 03/04/2018 00:08
14+
* @since JDK 1.8
15+
*/
16+
public class LRUMap<K, V> {
17+
private final Map<K, V> cacheMap = new HashMap<>();
18+
19+
private int queueSize;
20+
21+
private int nodeCount ;
22+
23+
24+
private Node<K,V> header ;
25+
private Node<K,V> tailer ;
26+
27+
28+
public void put(K key, V value) {
29+
cacheMap.put(key, value);
30+
31+
32+
}
33+
34+
private void addNode(K key,V value){
35+
//容量满了删除最后一个
36+
if (queueSize == nodeCount){
37+
tailer.next.tail = null ;
38+
tailer.next = null ;
39+
nodeCount -- ;
40+
}else {
41+
Node node = new Node(key,value) ;
42+
43+
}
44+
45+
46+
}
47+
48+
49+
private class Node<K,V> {
50+
private K key ;
51+
private V value ;
52+
Node<K,V> tail ;
53+
Node<K,V> next ;
54+
55+
public Node(K key, V value) {
56+
this.key = key;
57+
this.value = value;
58+
}
59+
60+
public K getKey() {
61+
return key;
62+
}
63+
64+
public void setKey(K key) {
65+
this.key = key;
66+
}
67+
68+
public V getValue() {
69+
return value;
70+
}
71+
72+
public void setValue(V value) {
73+
this.value = value;
74+
}
75+
76+
}
77+
}

0 commit comments

Comments
 (0)