利用LinkedHashMap 来模拟cache,并使用iterator 来提取hashsmap 头部的值

import java.util.*;


public class Solution {
    /**
     * lru design
     * @param operators int整型二维数组 the ops
     * @param k int整型 the k
     * @return int整型一维数组
     */
    public int[] LRU (int[][] operators, int k) {
        // write code here\
        Map<Integer, Integer> map = new LinkedHashMap<>();
        List<Integer> list = new LinkedList<>();
        for(int[] operator: operators){
            int key = operator[1];
            switch(operator[0]){
                case 1:
                    int value = operator[2];
                    if(map.size()<k){
                        map.put(key,value);
                    }else{
                        Iterator it = map.keySet().iterator();
                        map.remove(it.next());
                        map.put(key,value);
                    }
                    break;
                case 2:
                    if(map.containsKey(key)){
                        int val = map.get(key);
                        list.add(val);
                        map.remove(key);
                        map.put(key,val);
                    }else{
                        list.add(-1);
                    }
                    break;
                default:
            }
        }
        int[] res = new int[list.size()];
        int i=0;
        for(int val:list) res[i++] = val;
        return res;
    }
}