Skip to main content

LRU缓存算法

class LRUCache {
constructor(len) {
this._map = new Map();
this._len = len;
}

has(key) {
return this._map.has(key);
}

get(key) {
if (this._map.has(key)) {
let val = this._map.get(key);
this._map.delete(key);
this._map.set(key, val);
return val;
} else {
return null
}
}

set(key, value) {
this._map.set(key, value);
if (this._map.size > this._len) {
this._map.delete(this._map.keys().next().value); // 通过迭代器拿到map中第一个元素的键
}
}
}
tip

知识点:Map.prototype.keys() Map实例的keys()方法会返回一个新的map迭代器对象,该对象包含了此 map 中每个元素的键,按插入顺序排列。

const map1 = new Map();

map1.set('0', 'foo');
map1.set(1, 'bar');

const iterator1 = map1.keys();

console.log(iterator1.next().value);
// Expected output: "0"

console.log(iterator1.next().value);
// Expected output: 1

MDN