import java.util.*;
public class Solution {
private int size = 0;
//因为涉及到顺序问题 所以考虑有个集合 经常操作头部 所以考虑linkedlist
private LinkedList<HashMap<Integer, Integer>> list = new LinkedList<>();
//因为有key value 形式 所以 集合里面放map
public Solution(int capacity) {
size = capacity;
}
public int get(int key) {
//第一步取 取不需要删除 找到返回即可
for (int i = 0; i < list.size(); i++) {
HashMap<Integer, Integer> map = list.get(i);
if (map.get(key) != null) {
int res = map.get(key);
//第二步 返回之前调整缓存顺序 先删除这条数据 在插入到头部
if (i != 0) {
HashMap<Integer, Integer> map2 = list.remove(i);
list.add(0, map2);
}
return res;
}
}
//走到这里说明没找到
return -1;
}
public void set(int key, int value) {
// 第一步存 涉及到删除操作
for (int i = 0; i < list.size(); i++) {
HashMap<Integer, Integer> map = list.get(i);
if (map.get(key) != null) {
//先把旧的删除
list.remove(i);
break;
}
}
HashMap<Integer, Integer> map2 = new HashMap<>();
map2.put(key,value);
list.add(0,map2);
if(list.size() > size){
list.removeLast();
}
}
}
/**
* Your Solution object will be instantiated and called as such:
* Solution solution = new Solution(capacity);
* int output = solution.get(key);
* solution.set(key,value);
*/