-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyLru.java
More file actions
66 lines (58 loc) · 1.49 KB
/
Copy pathMyLru.java
File metadata and controls
66 lines (58 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package zOther;
import org.junit.Test;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @author dekai.kong
* @difficult
* @create 2020-07-15 14:31
* @from
**/
public class MyLru {
//大小为5的数组
private int[] lru = new int[5];
private Map<Integer,Integer> mapx = new HashMap(5);
private Map<Integer,Integer> mapIndex = new HashMap(5);
public MyLru() {
}
public void put(int key,int val){
if(mapIndex.get(key)==null&&mapIndex.size()==5){
int last = lru[5];
mapx.remove(last);
mapIndex.remove(last);
order(0,lru.length);
lru[0] = key;
mapIndex.put(key,0);
mapx.put(key,val);
}else if(mapIndex.get(key)==null){
mapx.put(key,val);
int cur = 5-mapIndex.size()-1;
lru[cur] = key;
mapIndex.put(key,cur);
}else{
//todo 有值重排序
}
}
public void order(int from,int to){
//遍历向后排
for (int i = from; i < to-1; i++) {
lru[i+1] = lru[i];
mapIndex.put(lru[i],i+1);
}
}
public int get(int key){
Integer val = mapx.get(key);
return val==null?-1:val;
}
@Test
public void test() {
MyLru myLru = new MyLru();
myLru.put(1,1);
myLru.put(2,1);
myLru.put(3,1);
myLru.put(4,1);
myLru.put(5,1);
System.out.println(myLru.get(1));
}
}