File tree Expand file tree Collapse file tree 1 file changed +19
-10
lines changed
Filter options
Expand file tree Collapse file tree 1 file changed +19
-10
lines changed
Original file line number Diff line number Diff line change @@ -88,14 +88,12 @@ public class LRU<K, V> implements Iterable<K> {
88
88
89
89
public void put (K key , V value ) {
90
90
91
- Node node;
92
91
if (map. containsKey(key)) {
93
- node = map. get(key);
92
+ Node node = map. get(key);
94
93
unlink(node);
95
94
}
96
- if (node == null ) {
97
- node = new Node (key, value);
98
- }
95
+
96
+ Node node = new Node (key, value);
99
97
map. put(key, node);
100
98
appendHead(node);
101
99
@@ -107,28 +105,38 @@ public class LRU<K, V> implements Iterable<K> {
107
105
108
106
109
107
private void unlink (Node node ) {
108
+
110
109
Node pre = node. pre;
111
110
Node next = node. next;
111
+
112
112
pre. next = next;
113
113
next. pre = pre;
114
-
114
+
115
115
node. pre = null ;
116
116
node. next = null ;
117
117
}
118
118
119
119
120
120
private void appendHead (Node node ) {
121
- node. next = head. next;
122
- node. next. pre = node;
121
+ Node next = head. next;
122
+ node. next = next;
123
+ next. pre = node;
123
124
node. pre = head;
124
125
head. next = node;
125
126
}
126
127
127
128
128
129
private Node removeTail () {
130
+
129
131
Node node = tail. pre;
130
- tail. pre = node. pre;
131
- node. pre. next = tail;
132
+
133
+ Node pre = node. pre;
134
+ tail. pre = pre;
135
+ pre. next = tail;
136
+
137
+ node. pre = null ;
138
+ node. next = null ;
139
+
132
140
return node;
133
141
}
134
142
@@ -138,6 +146,7 @@ public class LRU<K, V> implements Iterable<K> {
138
146
139
147
return new Iterator<K > () {
140
148
private Node cur = head. next;
149
+
141
150
@Override
142
151
public boolean hasNext () {
143
152
return cur != tail;
You can’t perform that action at this time.
0 commit comments