146_LRU Cache(js语法中map)
一、缓存文件置换机制
1.基本概念
缓存文件置换机制是电脑处理缓存存储器的一种机制。电脑存储器空间的大小固定,无法容纳服务器上所有的文件,所以当有新的文件要被置换入缓存时,必须根据一定的原则来取代掉适当的文件。此原则即所谓缓存文件置换机制。
2.缓存文件置换方法
(1)先进先出算法(FIFO):最先进入的内容作为替换对象;
(2)最近最少使用算法(LFU):最近最少使用的内容作为替换对象;
(3)最久未使用算法(LRU):最久没有访问的内容作为替换对象;
(4)非最近使用算法(NMRU):在最近没有使用的内容中随机选择一个作为替换对象;
二、js语法中map
1.基本概念
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。
一个Map对象在迭代时会根据对象中元素的插入顺序来进行一个 for循环在每次迭代后会返回一个形式为[key,value]的数组。
三、JS中map语法-LRU Cache
1.题目分析
由于map语法在迭代时会根据对象中元素的插入顺序来进行。所以在get中时,如果有相同的key,则先删除后放入;在put中如果有相同的key,则也先删除后放入。最后如果size>capacity,则直接map中后几位key和value删除。
2.代码编写
class LRUCache { constructor(capacity) { this.capacity = capacity; this.map = new Map(); } get(key) { let val = this.map.get(key); if (typeof val == 'undefined') { return -1; } this.map.delete(key); this.map.set(key, val); return val; } put(key, value) { if (this.map.has(key)) { this.map.delete(key); } this.map.set(key, value); let keys = this.map.keys(); while (this.map.size > this.capacity) { this.map.delete(keys.next().value); } } }

浙公网安备 33010602011771号