@@ -35,44 +35,44 @@ class Node{
35
35
public Node pre;// 指向前面的指针
36
36
public Node next;// 指向后面的指针
37
37
public Node (int key ,int value ){
38
- this . val= value;
39
- this . key= key;
38
+ this . val = value;
39
+ this . key = key;
40
40
}
41
41
}
42
42
class LRUCache {
43
43
int capacity;// 容量
44
44
Node head;// 双向链表的头,维护这个指针,因为set,get时需要在头部操作
45
45
Node end;// 双向链表的尾,set时,要是满了,需要将链表的最后一个节点remove
46
- HashMap<Integer ,Node > map= new HashMap<Integer ,Node > ();// hash表
46
+ HashMap<Integer ,Node > map = new HashMap<Integer ,Node > ();// hash表
47
47
public LRUCache (int capacity ) {
48
- this . capacity= capacity;
48
+ this . capacity = capacity;
49
49
}
50
50
// 添加,删除尾部,插入头部的操作
51
51
public void remove (Node node ){
52
- Node cur= node;
53
- Node pre= node. pre;
54
- Node post= node. next;
55
- if (pre== null ){// 说明cur是头部节点
56
- head= post;
52
+ Node cur = node;
53
+ Node pre = node. pre;
54
+ Node post = node. next;
55
+ if (pre == null ){// 说明cur是头部节点
56
+ head = post;
57
57
}
58
- else pre. next= post;// 更新指针,删除
59
- if (post== null ){// 说明cur是最后的节点
60
- end= pre;
58
+ else pre. next = post;// 更新指针,删除
59
+ if (post == null ){// 说明cur是最后的节点
60
+ end = pre;
61
61
}
62
- else post. pre= pre;
62
+ else post. pre = pre;
63
63
}
64
64
public void setHead (Node node ){
65
65
// 直接插入
66
- node. next= head;
67
- node. pre= null ;
68
- if (head!= null ) head. pre= node;// 防止第一次插入时为空
69
- head= node;
70
- if (end== null ) end= node;
66
+ node. next = head;
67
+ node. pre = null ;
68
+ if (head != null ) head. pre = node;// 防止第一次插入时为空
69
+ head = node;
70
+ if (end== null ) end = node;
71
71
}
72
72
public int get (int key ) {
73
73
if (map. containsKey(key)){
74
74
// 需要把对应的节点调整到头部
75
- Node latest= map. get(key);
75
+ Node latest = map. get(key);
76
76
remove(latest);
77
77
setHead(latest);
78
78
// 返回value
@@ -84,18 +84,18 @@ class LRUCache {
84
84
public void put (int key , int value ) {
85
85
if (map. containsKey(key)){// 这个key原来存在
86
86
// 只需要把key对应的node提到最前面,更新value
87
- Node oldNode= map. get(key);
88
- oldNode. val= value;
87
+ Node oldNode = map. get(key);
88
+ oldNode. val = value;
89
89
remove(oldNode);
90
90
setHead(oldNode);
91
91
}
92
92
else {
93
93
// 这个key原来不存在,需要重新new出来
94
- Node newNode= new Node (key,value);
94
+ Node newNode = new Node (key,value);
95
95
// 接下来要考虑容量
96
- if (map. size()< capacity){
96
+ if (map. size() < capacity){
97
97
setHead(newNode);
98
- map. put(key,newNode);
98
+ map. put(key, newNode);
99
99
}
100
100
else {
101
101
// 容量不够,需要先将map中,最不常使用的那个删除了删除
@@ -104,7 +104,7 @@ class LRUCache {
104
104
remove(end);
105
105
setHead(newNode);
106
106
// 放入新的
107
- map. put(key,newNode);
107
+ map. put(key, newNode);
108
108
}
109
109
}
110
110
}
0 commit comments