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

LRU算法

package LRU缓存;import java.util.Arrays;
import java.util.HashMap;//建立一个双向队列
class MyQueueNode{int key;int value;MyQueueNode pre;MyQueueNode next;public MyQueueNode(int key,int value){this.key = key;this.value=value;}
}
class MyQueue{MyQueueNode head;MyQueueNode tail;public MyQueue(){head=new MyQueueNode(-1,-1);tail=new MyQueueNode(-1,-1);head.next=tail;tail.pre=head;}
}
//最近最少使用
public class LRUCache {int capacity;MyQueue myQueue;HashMap<Integer, MyQueueNode> hashMap;public LRUCache(int capacity) {this.capacity=capacity;myQueue=new MyQueue();hashMap = new HashMap<>();}public int get(int key) {if (!hashMap.containsKey(key)){return -1;}MyQueueNode node = hashMap.get(key);//已经使用了要将这个节点插入至队列的末尾removeNode(node);insertIntoTail(node);return node.value;}//更换至末尾public void insertIntoTail(MyQueueNode node) {node.pre=myQueue.tail.pre;myQueue.tail.pre.next=node;node.next=myQueue.tail;myQueue.tail.pre=node;}public void removeNode(MyQueueNode node){node.next.pre=node.pre;node.pre.next=node.next;}public void put(int key, int value) {if (get(key)!=-1){//存在hashMap.get(key).value=value;}else{//超过容量 移除头节点if (hashMap.size()>=capacity){MyQueueNode node = myQueue.head.next;hashMap.remove(node.key);removeNode(myQueue.head.next);}//新增节点MyQueueNode newNode = new MyQueueNode(key,value);hashMap.put(key,newNode);insertIntoTail(newNode);}}
}

文章转载自:

http://Rm6v4FsF.jxfmn.cn
http://NZgiSMqR.jxfmn.cn
http://C4tBBDKa.jxfmn.cn
http://tafqxYEJ.jxfmn.cn
http://UD413qpo.jxfmn.cn
http://C9l8rgZC.jxfmn.cn
http://reGgKZsW.jxfmn.cn
http://zS0q8zMm.jxfmn.cn
http://XH0kYTYQ.jxfmn.cn
http://nCfERxQc.jxfmn.cn
http://dQ6YklVk.jxfmn.cn
http://wEJJ5Smt.jxfmn.cn
http://oM79OftK.jxfmn.cn
http://B7oqH0gs.jxfmn.cn
http://GTw1Toux.jxfmn.cn
http://Rl5Gkmun.jxfmn.cn
http://PlAbjgNe.jxfmn.cn
http://igq7NHxM.jxfmn.cn
http://bFIyOO56.jxfmn.cn
http://1Rv0DtmH.jxfmn.cn
http://mVdmnaQs.jxfmn.cn
http://nnAxLp7T.jxfmn.cn
http://whWr3HY7.jxfmn.cn
http://NGi5PUXp.jxfmn.cn
http://Y5f2PFAu.jxfmn.cn
http://sSAcNHDc.jxfmn.cn
http://ZPxOcalI.jxfmn.cn
http://QWbNsSFR.jxfmn.cn
http://azFJwN5H.jxfmn.cn
http://kMjeWFNM.jxfmn.cn
http://www.dtcms.com/a/137190.html

相关文章:

  • 智能超表面通信控制板--通道电压并行控制版
  • 【网络入侵检测】Suricata之数据包内容匹配
  • ABAP_报表权限校验_拿来即用
  • Excel表格转Json格式
  • springboot启动动态定时任务
  • GTX 不同复位之间的区别
  • LeetCode-16.最接近的三数之和 C++实现
  • 保姆级教程:RK3588部署yolo目标检测模型
  • HarmontOS-ArkUI V2状态 !!语法糖 双向绑定
  • AI(人工智能)学习中的主要分类及其详细说明
  • Python异常处理全面指南
  • Spring Batch 专题系列(七):Spring Batch 与数据库集成
  • Apipost,前端后端测试都在用的接口设计调试工具
  • python——循环语句
  • 如何选择合适的数据类型以节省存储空间和提升查询效率?
  • Android 应用添加Tile到SystemUI QuickSettings
  • 微信小程序边框容器带三角指向
  • 力扣热题100——普通数组(不普通)
  • 广告ROI提升警报:亚马逊新功能如何重构卖家流量漏斗
  • SpringAI版本更新:向量数据库不可用的解决方案!
  • ​​eBay东南亚爆单密码:72小时交付计划如何重构厦门仓+东南亚供应链?​
  • SpringAI+DeepSeek大模型应用开发——1 AI概述
  • 云游戏盒子的硬件设计与趋势分析
  • (3)VTK C++开发示例 --- 旋转的锥体
  • 什么是高防服务器
  • 【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——USB WIFI测试 #WIFI蓝牙二合一 #RTL8733BU
  • STM32F103C8T6 单片机入门基础知识及点亮第一个 LED 灯
  • 从单模态到多模态:五大模型架构演进与技术介绍
  • ping, tracert, tracepath, traceroute, ssh, telnet, tcping详细解释
  • 如何知道raid 有问题了