1010 * @author zixiao
1111 * @date 2019/2/25
1212 */
13- public class LRUCache implements ICache <String , Object >{
13+ public class LRUCache < K , V > implements ICache <K , V >{
1414
1515 private int maxSize ;
1616
17- private Map <String , DoubleLinkNode > map = new HashMap <>();
17+ private Map <K , DoubleLinkNode < K , V > > map = new HashMap <>();
1818
19- private DoubleLinkNode head ;
19+ private DoubleLinkNode < K , V > head ;
2020
21- private DoubleLinkNode tail ;
21+ private DoubleLinkNode < K , V > tail ;
2222
2323 public LRUCache (int maxSize ){
2424 this .maxSize = maxSize ;
2525 }
2626
2727 @ Override
28- public Object get (String key ) {
28+ public V get (K key ) {
2929 if (map .containsKey (key )){
30- DoubleLinkNode node = map .get (key );
30+ DoubleLinkNode < K , V > node = map .get (key );
3131 if (head != node ){
3232 breakLink (node );
3333 addToHead (node );
@@ -95,12 +95,12 @@ private void removeHead(){
9595 }
9696
9797 @ Override
98- public boolean exist (String key ) {
98+ public boolean exist (K key ) {
9999 return map .containsKey (key );
100100 }
101101
102102 @ Override
103- public Object set (String key , Object value ) {
103+ public V set (K key , V value ) {
104104 if (map .containsKey (key )){
105105 DoubleLinkNode node = map .get (key );
106106 node .value = value ;
@@ -121,12 +121,12 @@ public Object set(String key, Object value) {
121121 }
122122
123123 @ Override
124- public Object set (String key , Object value , int expireSeconds ) {
124+ public V set (K key , V value , int expireSeconds ) {
125125 throw new UnsupportedOperationException ();
126126 }
127127
128128 @ Override
129- public boolean setnx (String key , Object value ) {
129+ public boolean setnx (K key , V value ) {
130130 if (map .containsKey (key )){
131131 return false ;
132132 }
@@ -135,14 +135,14 @@ public boolean setnx(String key, Object value) {
135135 }
136136
137137 @ Override
138- public void expire (String key , int expireSeconds ) {
138+ public void expire (K key , int expireSeconds ) {
139139 throw new UnsupportedOperationException ();
140140 }
141141
142142 @ Override
143- public Object delete (String key ) {
143+ public V delete (K key ) {
144144 if (map .containsKey (key )){
145- DoubleLinkNode node = map .get (key );
145+ DoubleLinkNode < K , V > node = map .get (key );
146146 map .remove (key );
147147 if (head != node ){
148148 breakLink (node );
@@ -161,17 +161,17 @@ public void stop() {
161161 tail = null ;
162162 }
163163
164- class DoubleLinkNode {
164+ class DoubleLinkNode < K , V > {
165165
166- private String key ;
166+ private K key ;
167167
168- private Object value ;
168+ private V value ;
169169
170- private DoubleLinkNode prev ;
170+ private DoubleLinkNode < K , V > prev ;
171171
172- private DoubleLinkNode next ;
172+ private DoubleLinkNode < K , V > next ;
173173
174- public DoubleLinkNode (String key , Object value ) {
174+ public DoubleLinkNode (K key , V value ) {
175175 this .key = key ;
176176 this .value = value ;
177177 }
0 commit comments