您的位置:首页 > 文旅 > 美景 > 家政公司管理系统_广告设计专业课程_百度推广工作怎么样_百度一对一解答

家政公司管理系统_广告设计专业课程_百度推广工作怎么样_百度一对一解答

2025/3/18 0:51:00 来源:https://blog.csdn.net/Tomkruse11/article/details/144153483  浏览:    关键词:家政公司管理系统_广告设计专业课程_百度推广工作怎么样_百度一对一解答
家政公司管理系统_广告设计专业课程_百度推广工作怎么样_百度一对一解答

本题关键思路:当访问一个key后,就移动该key到最前面的位置或者最后面的位置,那么另一端最后一个元素就是最近最久没有访问的元素。而LinkedHashMap就是可以按照访问顺序来移动元素。

class LRUCache {int cap=0;// HashMap<Integer,Integer> map=new HashMap<>();LinkedHashMap<Integer,Integer> map=null;//LinkedHashMap:有顺序的map 相当于hashmap+双向链表 三个参数cap 负载因子 是否按顺序排列//当调用一次get访问元素后 那么该元素就会放到最后public LRUCache(int capacity) {//这一步是初始化容量  表示最多存几个元素 也就是几个key//思路 通过一个hashmap来存放keythis.cap=capacity;map=new LinkedHashMap<>(cap,0.75f,true); //对map进行初始化}public int get(int key) {return    map.getOrDefault(key,-1); //如果找到key 则返回对应的值 如果没找到则返回-1}public void put(int key, int value) {//put key和对应的value值//1.put元素首先要检查是否已经容量满了if(map.containsKey(key)){ //表示重复元素直接覆盖map.put(key,value);return;}if(map.size()>=cap){//表示已经满了//就要踢出使用得最少的 //LinkedHashMap的规则就是 当使用get方法后 会将get的key放到最后面 那么最前面的就是访问最少的for(Map.Entry<Integer,Integer> entry:map.entrySet()){int minkey=entry.getKey();//第一个key就是最近访问最少的//这里要注意put的元素是不是重复的 如果是重复元素则不需要删除map.remove(minkey);break;}}//然后添加元素map.put(key,value);}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com