LRUCacheMechanism题目描述:利用掌握的数据结构,设计并实现一个LRU(leastrecentlyused)缓存机制。实现LRUCache类:LRUCache(intcapacity)使用正整数作为初始化LRU缓存的容量intget(intkey)如果缓存中存在关键字key,则返回key的值,否则返回-1。voidput(intkey,intvalue)如果键已经存在,改变它的数据值;如果键不存在,则插入“key-value”集合。当缓存容量达到上限时,它应该在写入新数据之前删除最旧的未使用数据值,从而为新数据值腾出空间。进阶:你能在O(1)时间复杂度内完成这两个操作吗?例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:由于LinkedHashMap允许使用已有的数据结构,LinkedHashMap是支持的,所以可以直接继承LinkedHashMap。当然,这是一种偷懒的做法。如果你了解LinkedHashMap的实现,你可以相应地实现它。importjava.util.LinkedHashMap;importjava.util.Map;publicclassLeetCode_146{publicstaticvoidmain(String[]args){//测试用例LRUCachelRUCache=newLRUCache(2);lRUCache.put(1,1);//缓存是{1=1}lRUCache.put(2,2);//缓存是{1=1,2=2}lRUCache.get(1);//返回1lRUCache.put(3,3);//该操作会使关键字2失效,缓存为{1=1,3=3}lRUCache.get(2);//返回-1(未找到)lRUCache.put(4,4);//该操作会使关键字1失效,缓存为{4=4,3=3}lRUCache.get(1);//返回-1(未找到)lRUCache.get(3);//返回3lRUCache。得到(4);//返回4}}classLRUCacheextendsLinkedHashMap
