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

力扣-146.LRU缓存机制

题目链接

146.LRU缓存机制

class LRUCache {HashMap<Integer, Integer> cache = new LinkedHashMap<>();int size = 0;public LRUCache(int capacity) {this.size = capacity;}public int get(int key) {if (!cache.containsKey(key)) {return -1;}move(key);return cache.get(key);}public void put(int key, int value) {if (cache.containsKey(key)) {cache.remove(key);cache.put(key, value);return;}if (cache.size() == this.size) {cache.remove(cache.keySet().iterator().next());}cache.put(key, value);}public void move(int key) {int val = cache.get(key);cache.remove(key);cache.put(key, val);}
}

小结:通俗地讲,LRU就是一个长度固定的队列,满了之后新的会把老的挤出去,特别的地方在于查询或修改操作,要把这个元素删掉重新插入,使用了这个元素就好像它是最近添加的新元素。由于在java中,LinkedHashMap是有序的,可以直接通过cache.keySet().iterator().next()找到最久远的key,可以比较方便地删除旧元素。

http://www.xdnf.cn/news/1132327.html

相关文章:

  • Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率
  • MybatisPlus-11.IService的批量新增
  • 高性能架构模式——高性能缓存架构
  • alpineLinux修改包管理为国内源
  • 【Linux】基本指令详解(二) 输入\输出重定向、一切皆文件、认识管道、man、cp、mv、echo、cat
  • LVS集群搭建
  • OpenCV稠密光流估计的一个类cv::optflow::DenseRLOFOpticalFlow
  • [AI-video] 字幕服务 | 视频素材服务 | 视频生成服务
  • 智能电网时代:双向WiFi电表在海外家庭能源中的战略价值
  • C++---emplace_back与push_back
  • 网络爬虫的相关知识和操作
  • lazyvim恢复gt键
  • 项目流程管理系统使用建议:推荐13款
  • 【27】MFC入门到精通——MFC 修改用户界面登录IP IP Address Control
  • DHTMLX Suite 9.2 重磅发布:支持历史记录、类Excel交互、剪贴板、拖放增强等多项升级
  • AWS IAM 最佳安全实践通用指南
  • 随机链表的复制数据结构oj题(力口138)
  • HTML进阶
  • Golang学习之常见开发陷阱完全手册
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘tkinter’问题
  • C#语法基础总结(超级全面)
  • 16路串口光纤通信FPGA项目实现指南 - 第二部分(下)
  • uniapp写好的弹窗组件
  • Maven入门指南:生命周期、阶段和执行顺序详解
  • Qt 将触摸事件转换为鼠标事件(Qt4和Qt5及以上版本)
  • webpack和vite对比
  • Django基础(三)———模板
  • 大语言模型(LLM)训练的教师强制(Teacher Forcing)方法
  • django在线音乐数据采集-22647
  • Anspire Open暑期上新季 - 第二弹Anspire Browser Agent,开启云端自动化新纪元