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

政府网站建设需求调查啥是网络推广

政府网站建设需求调查,啥是网络推广,高淳区建设局网站,工具类网站设计请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -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保持了键值对的插入顺序或访问顺序,这使得它非常适合在按需要按照顺序访问元素的场景中使用

所以要手动的去构建一个结构体,构造方法必不可少

     LinkedHashMap<Integer,Integer> map=new LinkedHashMap<>();private int capacity;//容量public LRUCache(int capacity) {this.capacity=capacity;}

       在我们使用的过程中,对于最新访问的key-value,我们无需对其顺序进行改变,但是如果我们去访问了一个比较使用时间过长的key-value,那么每次都要对其键值进行删除增加,这给代码带来非常差的可读性,所以我们应该重新声明一个方法(最近使用recently)

   public void recently(int key){int val=map.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机制,每次遍历的时候,都是拿的原集合一个快照进行遍历,如果当遍历的时候有人对集合进行增删,结果可能就出现了问题

源码借鉴:

  LinkedHashMap<Integer,Integer> map=new LinkedHashMap<>();private int capacity;public LRUCache(int capacity) {this.capacity=capacity;}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 val=map.get(key);map.remove(key);map.put(key,val);}

http://www.mnyf.cn/news/52668.html

相关文章:

  • 出色的网站东莞做网站seo
  • 58创业网seo网站营销推广
  • 做门户网站用什么技术好网络营销策划案例
  • 太原心诺做网站今日新闻大事
  • 网站负责人 法人搜索引擎seo关键词优化
  • 达人设计网官方网站最新引流推广方法
  • 给别人做ppt的网站网站到首页排名
  • 上海红酒网站建设seo建站公司
  • 包包网站建设策划书百度快照怎么用
  • 自适应网站什么做微信软文范例100字
  • 网站建设aichengkejiseo在线优化技术
  • 网站建设分工表百度关键词搜索推广
  • 网站打不开 域名做解析宁波seo基础入门
  • 建立个网站湖南长沙seo
  • 泰州网站建设方案开发泽成杭州seo网站推广排名
  • 从事网站建设的职业chrome谷歌浏览器官方下载
  • 网站前台设计教程南宁seo排名外包
  • 做网站 需求百度统计流量研究院
  • 上海市网站seo公司合肥seo网络营销推广
  • 丰台路网站建设高端网站建设深圳
  • 网站排名不可有利就前百度云手机登录入口
  • 外贸b2c网站如何做推广怎样在百度上推广
  • 免费做橙光封面的网站百度自然排名优化
  • 云速建站与传统网站的区别淘宝流量助手平台
  • jsp做网站遇到的问题百度网页游戏排行榜
  • 齐齐哈尔做网站独立网站和平台网站
  • 网站开发推进计划表谷歌浏览器下载安装(手机安卓版)
  • 买了空间和域名 怎么做网站中央人民政府
  • 济南网站建设行知科技旺道seo推广系统怎么收费
  • 营销网站建站开发8大营销工具指的是哪些