一个最简单的LRUCache实现 (JAVA)
2024-10-21 18:44:07
流程图:
1. 代码
import java.util.ArrayList; public class LRUCache {
private int cacheMaxSize = 0;
private ArrayList<Integer> pages = null; // Interger means page id public LRUCache(int cacheMaxSize) {
this.cacheMaxSize = cacheMaxSize;
pages = new ArrayList<Integer>();
} public void add(Integer p) {
if (pages.contains(p)) {
pages.remove(p);
pages.add(p);
} else if (pages.size() == cacheMaxSize) {
pages.remove(0);
pages.add(p);
} else {
pages.add(p);
} }
}
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();
}
}
最新文章
- 1.reset.css的设置
- array_filter,匿名函数
- JS---如何避免用户在请求时“猛击”
- as关键词还有另外一个用途,那就是修改 方法 的访问控制
- 使用 IntelliJ IDEA 2016和Maven创建Java Web项目的详细步骤及相关问题解决办法
- 【转】VS2012程序打包部署详解
- Nginx 配置指令location 匹配符优先级和安全问题【转】
- Asp.Net中GridView加入鼠标滑过的高亮效果和单击行颜色改变
- 关于cocos2dx导入安卓项目至eclipse的诸多问题
- JavaBean中DAO设计模式介绍
- L9,a cold welcome
- java算法 蓝桥杯 格子位置
- Git详解之九:Git内部原理
- 树链剖分模板(BZOJ3083)
- 20155324《网络对抗》Exp07 网络欺诈防范
- js中的Call()和apply()
- maven小结
- [PHP]算法- 判断是否为二叉搜索树的后序遍历序列的PHP实现
- Polygon Offset
- Nginx使用笔记