@@ -5,44 +5,44 @@ class Node{
55 public Node pre ;//指向前面的指针
66 public Node next ;//指向后面的指针
77 public Node (int key ,int value ){
8- this .val = value ;
9- this .key = key ;
8+ this .val = value ;
9+ this .key = key ;
1010 }
1111}
1212class LRUCache {
1313 int capacity ;//容量
1414 Node head ;//双向链表的头,维护这个指针,因为set,get时需要在头部操作
1515 Node end ;//双向链表的尾,set时,要是满了,需要将链表的最后一个节点remove
16- HashMap <Integer ,Node > map = new HashMap <Integer ,Node >();//hash表
16+ HashMap <Integer ,Node > map = new HashMap <Integer ,Node >();//hash表
1717 public LRUCache (int capacity ) {
18- this .capacity = capacity ;
18+ this .capacity = capacity ;
1919 }
2020 //添加,删除尾部,插入头部的操作
2121 public void remove (Node node ){
22- Node cur = node ;
23- Node pre = node .pre ;
24- Node post = node .next ;
25- if (pre == null ){//说明cur是头部节点
26- head = post ;
22+ Node cur = node ;
23+ Node pre = node .pre ;
24+ Node post = node .next ;
25+ if (pre == null ){//说明cur是头部节点
26+ head = post ;
2727 }
28- else pre .next = post ;//更新指针,删除
29- if (post == null ){//说明cur是最后的节点
30- end = pre ;
28+ else pre .next = post ;//更新指针,删除
29+ if (post == null ){//说明cur是最后的节点
30+ end = pre ;
3131 }
32- else post .pre = pre ;
32+ else post .pre = pre ;
3333 }
3434 public void setHead (Node node ){
3535 //直接插入
36- node .next = head ;
37- node .pre = null ;
38- if (head != null ) head .pre = node ;//防止第一次插入时为空
39- head = node ;
40- if (end ==null ) end = node ;
36+ node .next = head ;
37+ node .pre = null ;
38+ if (head != null ) head .pre = node ;//防止第一次插入时为空
39+ head = node ;
40+ if (end ==null ) end = node ;
4141 }
4242 public int get (int key ) {
4343 if (map .containsKey (key )){
4444 //需要把对应的节点调整到头部
45- Node latest = map .get (key );
45+ Node latest = map .get (key );
4646 remove (latest );
4747 setHead (latest );
4848 //返回value
@@ -54,18 +54,18 @@ public int get(int key) {
5454 public void put (int key , int value ) {
5555 if (map .containsKey (key )){//这个key原来存在
5656 //只需要把key对应的node提到最前面,更新value
57- Node oldNode = map .get (key );
58- oldNode .val = value ;
57+ Node oldNode = map .get (key );
58+ oldNode .val = value ;
5959 remove (oldNode );
6060 setHead (oldNode );
6161 }
6262 else {
6363 //这个key原来不存在,需要重新new出来
64- Node newNode = new Node (key ,value );
64+ Node newNode = new Node (key ,value );
6565 //接下来要考虑容量
66- if (map .size ()< capacity ){
66+ if (map .size () < capacity ){
6767 setHead (newNode );
68- map .put (key ,newNode );
68+ map .put (key , newNode );
6969 }
7070 else {
7171 //容量不够,需要先将map中,最不常使用的那个删除了删除
@@ -74,7 +74,7 @@ public void put(int key, int value) {
7474 remove (end );
7575 setHead (newNode );
7676 //放入新的
77- map .put (key ,newNode );
77+ map .put (key , newNode );
7878 }
7979 }
8080 }
0 commit comments