当前位置: 首页 > news >正文

巢湖市网站建设推广做外贸企业网站要注意哪些

巢湖市网站建设推广,做外贸企业网站要注意哪些,免费的旅游网站模板,辽宁网站建设熊掌号请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中#xff0c;则返回关键字的值#xff0c;否则返回 -1 … 请你设计并实现一个满足  LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类 LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中则返回关键字的值否则返回 -1 。void put(int key, int value) 如果关键字 key 已经存在则变更其数据值 value 如果不存在则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity 则应该 逐出 最久未使用的关键字。 函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。 由于我们在维护key-value键值对的同时还要注意它们的入队顺序所以用普通的Map肯定是不行的因为我亲身体验过 所以我们需要一个可以自动的维护顺序的数据结构才能处理本题所以LinikedHashMap肯定是最好的选择在我们在刷题的时候其实LinkedHashMap其实是不太常见的先在这里给大家科普一下 LinkedHashMap是一种集合类型它实现了Map接口并且通过双向链表维护了插入顺序或者访问顺序与常规的HashMap相比LinkedHashMap保持了键值对的插入顺序或访问顺序这使得它非常适合在按需要按照顺序访问元素的场景中使用 所以要手动的去构建一个结构体构造方法必不可少 LinkedHashMapInteger,Integer mapnew LinkedHashMap();private int capacity;//容量public LRUCache(int capacity) {this.capacitycapacity;} 在我们使用的过程中对于最新访问的key-value我们无需对其顺序进行改变但是如果我们去访问了一个比较使用时间过长的key-value那么每次都要对其键值进行删除增加这给代码带来非常差的可读性所以我们应该重新声明一个方法最近使用recently public void recently(int key){int valmap.get(key);map.remove(key);map.put(key,val);} 通过key值去获得value的值如果没有的话直接返回-1获取值也是一种操作证明这个key是刚使用过的所以直接调用函数recnetly() public int get(int key) {if(!map.containsKey(key)){return -1;}recently(key);return map.get(key);} 如果往进put的时候如果map的key的数量超过capacity,那就直接删除最早进来的key(很久没有使用的key值)直接提升为最近使用如果没有直接加入 public void put(int key, int value) {if(map.containsKey(key)){map.put(key,value);recently(key);return;}if(map.size()capacity){map.remove(map.keySet().iterator().next());}map.put(key,value);} 在这里给大家着重说明一下keySet().iterator().next()的功能 keySet():返回LinkedHashMap中的所有键的集合该方法将返回一个Set的对象其中包含所有的键 iterator():返回一个迭代器用于遍历集合中的元素在这种情况下我们获取到的是键集合的迭代器以便逐个访问键 next():迭代器的方法之一用于获取下一个元素由于我们希望获得第一个键所以该操作将返回集合中的第一个元素 用迭代器遍历集合当集合初始值不为空时遍历的过程中是不会抛出异常的因为集合遍历时用的fail-safe机制每次遍历的时候都是拿的原集合一个快照进行遍历如果当遍历的时候有人对集合进行增删结果可能就出现了问题 源码借鉴 LinkedHashMapInteger,Integer mapnew LinkedHashMap();private int capacity;public LRUCache(int capacity) {this.capacitycapacity;}public int get(int key) {if(!map.containsKey(key)){return -1;}recently(key);return map.get(key);}public void put(int key, int value) {if(map.containsKey(key)){map.put(key,value);recently(key);return;}if(map.size()capacity){map.remove(map.keySet().iterator().next());}map.put(key,value);}public void recently(int key){int valmap.get(key);map.remove(key);map.put(key,val);}
http://wiki.neutronadmin.com/news/53507/

相关文章:

  • 部队网站建设招标淘宝客优惠卷网站怎么做的
  • 中国icp备案的有多少企业网站wordpress客户端被墙
  • 访问网站的原理龙岗网站建设网站制作
  • 无极app定制开发公司网站模板pc版网站生成App
  • 网站建设 技术方案模板企业门户网站开发任务书
  • 鹿城做网站如何自己建营销网站
  • 济宁网站建设流程合作加盟
  • 重庆网站制作服务自己的网站怎么编辑器
  • 用aspx做的网站wordpress又拍云插件
  • 商城微网站如何做图片下载网站哪个好
  • 学校网站手机站的建设大连旧房翻新装修哪家公司好
  • 西部数码做跳转网站确定网站建设目的
  • 橙光音乐一家做音乐的网站广告语
  • 网站后台如何修改文字罗湖网站制作多少钱
  • 英文网站建设 深圳医院网站建设情况汇报
  • 做的好的大学生旅行有哪些网站好陕西天工建设有限公司网站
  • 重庆企业服务建站网站开发如何用rp做网站
  • 网站开发中常用的技术和工具上海十大营销策划公司
  • 外贸网站响应式内销网站要怎么做
  • 绍兴网站建设模板网站装修案例效果图
  • 刷推广链接的网站网站开发员的工资
  • 网上做室内设计好的网站网上手机网站建设计划书
  • 网络推广的目标哈尔滨百度seo代理
  • 怎么让百度搜索到自己的网站卖表网站源码
  • 网站上资源截图怎么做互联网网站建设价格
  • 莱芜企业建站公司wordpress 多语言设置
  • 中建建筑网站中国域名注册局官网
  • 有没有免费网站建设wordpress is_single
  • 佛山免费建站模板手机登陆网页版微信
  • 仿素材网站源码做网站至少多少钱