流程图:
1. 代码
1 import java.util.ArrayList; 2 3 public class LRUCache { 4 private int cacheMaxSize = 0; 5 private ArrayList<Integer> pages = null; // Interger means page id 6 7 public LRUCache(int cacheMaxSize) { 8 this.cacheMaxSize = cacheMaxSize; 9 pages = new ArrayList<Integer>(); 10 } 11 12 public void add(Integer p) { 13 if (pages.contains(p)) { 14 pages.remove(p); 15 pages.add(p); 16 } else if (pages.size() == cacheMaxSize) { 17 pages.remove(0); 18 pages.add(p); 19 } else { 20 pages.add(p); 21 }22 } 23 }
2. 测试的代码
import java.util.ArrayList; import java.util.Scanner; import xqy.been.LRUCache; public class LRU { private Scanner sc; private LRUCache lc = null; private ArrayList<Integer> pages = null; public LRU() { sc = new Scanner(System.in); pages = new ArrayList<Integer>(); init(); op(); } private void init() { int key = -2; System.out.print("<LRU> 请输入物理块个数:"); lc = new LRUCache(sc.nextInt()); System.out.println("<LRU> 请按顺序输入页号(exit: -1): "); while (key != -1) { key = sc.nextInt(); if (key > 0) { pages.add(key); } } } private void op() { for (int i = 0; i < pages.size(); i++) { lc.add(pages.get(i)); } } public static void main(String[] args) { new LRU(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)