解题思路

因为要更新最近访问的key-value值,所以采用HashMap不行,因为HashMap的存储顺序是无序的。
思考采用List接口的实现类。
又因为需要频繁地删除最少使用的key-value和插入最近访问的key-value,因此考虑采用2个全局LinkedList(kList与vList)来记录并更新key与value集合。通过遍历二维数组operators,完成插入或获取元素功能;

函数说明

1. 获取函数get(int key)
功能:获取key对应的value,并更新key-value的位置为最近访问过的位置。
实现思路:遍历kList找出key的下标idx,获取vList中对应的value。更新当前key-value为最近访问过的值(删除该元素,同时在集合最后添加该元素)
2. 插入函数set(int key, int value, int k)
功能:插入key-value,同时更新位置。
实现思路:判断集合元素总数是否超出了缓存大小k,若超出则先删除最少使用的元素,再更新key-value;若未超出则直接更新key-value。其中需要注意的是key的值是否重复的问题,若出现重复添加的情况,需要更新value值与位置。