【16】LRUChache
题目
LRU
思路
LRU 大家都不陌生,操作系统的作业做过,思路就是一旦添加或者访问某个元素,则将其的“访问属性”置零,而其他元素的访问属性统统减一,这样一来,访问属性最小的元素就是最久没访问过的。
但是,我看了下题解,似乎有个java类可以完美实现LRU 就是linkHashMap
收获
LinkedHashMap的构造函数:cache = new LinkedHashMap<>(capacity,0.75f,true);LinkedHashMap的三个构造函数分别是初始容量,扩容因子和是否移除旧的元素
若要实现移除旧元素则需要重写其函数:
protected boolean removeEldestEntry(Map.Entry eldest) {
if(this.size() > capacity){
return true;
}
return false;
}
代码
class LRUCache {
Map<Integer,Integer> cache = null;
// 这个是匿名内部类
// LinkedHashMap的三个构造函数分别是初始容量,扩容因子和是否移除旧的元素
public LRUCache(int capacity) {
cache = new LinkedHashMap<>(capacity,0.75f,true){
// 必须覆盖该方法来保证移除旧的元素
// 返回false,不删除
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
if(this.size() > capacity){
return true;
}
return false;
}
};
}
public int get(int key) {
Integer v = this.cache.get(key);
return v==null?-1:v.intValue();
}
public void put(int key, int value) {
this.cache.put(key,value);
}
}
【16】LRUChache的更多相关文章
- 企业IT管理员IE11升级指南【16】—— 使用Compat Inspector快速定位IE兼容性问题
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- LeetCode:字母异位词分组【16】
LeetCode:字母异位词分组[16] 题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", &quo ...
- LeetCode:最接近的三数之和【16】
LeetCode:最接近的三数之和[16] 题目描述 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这 ...
- Java 基础【16】 文件(文件夹) 创建和删除
使用 java.io.file 创建文件(文件夹),算是 java 最基础的知识,但实战项目中还是需要知晓细节. 比如 File 类中的 mkdir() 和 mkdirs() 的区别. JDK API ...
- Selenium3自动化测试【16】元素定位之Tag
@ 目录 1. 通过tag name定位Bing案例 2. 通过tag name定位一组元素案例 3.[测试全系列视频课程]请点击我哦..... tag name方法是通过对HTML页面中tag na ...
- Webpack探索【16】--- 懒加载构建原理详解(模块如何被组建&如何加载)&源码解读
本文主要说明Webpack懒加载构建和加载的原理,对构建后的源码进行分析. 一 说明 本文以一个简单的示例,通过对构建好的bundle.js源码进行分析,说明Webpack懒加载构建原理. 本文使用的 ...
- 【16】进大厂必须掌握的面试题-100个python面试
我们整理了Python面试的主要问题清单,分为7个部分: 基本面试问题 OOPS面试问题 基本的Python程序 Python库面试问题 数据分析面试题 选择题(MCQ) 基本的Python面试问题 ...
- 【html】【16】高级篇--毛玻璃效果[模糊]
参考: http://www.zhangxinxu.com/wordpress/2013/11/%E5%B0%8Ftip-%E4%BD%BF%E7%94%A8css%E5%B0%86%E5%9B%BE ...
- 【16】成对使用new和delete时要采取相同形式
简而言之,new时不带[],delete时也不带[]:new时带[],delete时也要带[].如果不匹配,要么造成多销毁对象,导致未定义行为:要么导致少销毁对象,导致内存泄漏.
随机推荐
- Spring-微服务
项目框架 功能模块介绍 Eureka:https://baike.baidu.com/item/Eureka/22402835?fr=aladdin Ribbon:https://www.jiansh ...
- IO流学习之综合运用(文件复制)
通过File.字节流.字节流缓冲区实现文件复制 需求: 1.用File类读取指定文件File下的所有文件(包括Copy文件夹内的所有文件) 2.将所有文件复制到指定文件FileCopy夹下 需求分析: ...
- linux 下查看json 文件 使用jq工具
安装 文档 yum 安装 yum search jq yum -y install jq.x86_64 apt-get install jq jq支持查看 jq . json 文件 查看json文件 ...
- C++->10.3.2-3,使用文件流类录入数据,并统计行数
题目:建立一个文本文件,从键盘录入一篇短文存放在该文件中短文由若干行构成,每行不超过80个字符,并统计行数. /* #include<iostream.h>#include<stdl ...
- webkit 技术内幕 笔记 二
浏览器历史 80年代末-90年代初:worldwideweb(nexus) -- Berners-Lee 1993: Mosaic浏览器,后来叫网景(Netscape)--Marc Andreesse ...
- openlayers显示比例尺
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 一次H5毛玻璃效果有感
印象中H5实现毛玻璃效果是挺好实现的,主要的代码就是css的filter:blur. 之前也用过几次,给背景图加高斯模糊啊,给一个div加高斯模糊啊.只要给需要添加高斯模糊的元素直接添加filter属 ...
- 安装Bind到CentOS(YUM)
运行环境 系统版本:CentOS Linux release 7.3.1611 (Core) 软件版本:Bind-x 硬件要求:无 安装过程 1.配置YUM源 [root@localhost ~]# ...
- C#读取excel时提示“外部数据库驱动程序 (1) 中的意外错误”
- Android_下方弹出菜单的实现
这一功能要用到动画相关知识 实现点击按钮弹出下方输入框,这里点击可弹出一个输入界面,其中包括一个小型计算器. 点击date可弹出datedialog设置date. 1.编写弹出框的布局文件 <? ...