当前位置: 首页 > 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.lryc.cn/news/590151.html

相关文章:

  • Linux-局域网构建+VLAN 划分 + 端口 MAC-IP 绑定 + 静态 DHCP
  • 【前端】在Vue3中绘制多系列柱状图与曲线图
  • (nice!!!)(LeetCode 每日一题) 3201. 找出有效子序列的最大长度 I (动态规划dp)
  • 产品经理笔试考试回忆集(2025湖南某国企)
  • 电力政策解读:山东电网新型储能集中调用的能源管理系统实现点
  • 百炼Agent MCP与IoT实战(二):阿里云MQTT Broker配置
  • arm版本的ubuntu安装git或者vim等方法
  • TypeScript的export用法
  • Linux LVS集群技术详解与实战指南
  • Vue + React 联合开发指南:跨越框架边界的前端实践
  • 第二章【vue】基础(超详细)
  • 佰力博检测与您探讨高温压电d33测试的操作步骤与选购建议
  • go项目实战
  • 自学中医笔记(一)
  • PowerBI实现仅在需要图表时显示图表
  • 时序大模型为时序数据库带来的变革与机遇
  • 从零开始的云计算生活——番外3,LVS+KeepAlived+Nginx高可用实现方案
  • AWS权限异常实时告警系统完整实现指南
  • 自动化框架 Selenium 的使用
  • 74、搜索二维矩阵
  • 随机链表的复制数据结构oj题(力口138)
  • Mybatis的SQL编写—XML方式
  • 3分钟实战!用DeepSeek+墨刀AI生成智能对话APP原型图
  • 035_ClaudeCode_MCP_介绍
  • 电脑安装 Win10 提示无法在当前分区上安装Windows的解决办法
  • 【数据结构】「栈」(顺序栈、共享栈、链栈)
  • 现代前端开发流程:CI/CD与自动化部署实战
  • 多维动态规划题解——最小路径和【LeetCode】空间优化一维数组
  • 手撕设计模式之消息推送系统——桥接模式
  • Jenkins全方位CI/CD实战指南