/**
* Least Recently Used (LRU)
* 最久未使用
*/
class LRUCache {
#map;
#length;
constructor(len) {
this.#map = new Map();
this.#length = len;
}
has(key) {
return this.#map.has(key);
}
get(key) {
if (!this.has(key)) return null;
const value = this.#map.get(key);
this.#map.delete(key);
this.#map.set(key, value);
return value;
}
set(key, value) {
if (this.has(key)) {
this.#map.delete(key);
}
this.#map.set(key, value);
// 如果map的长度大于length,则删除map的第一个key
if (this.#map.size > this.#length) {
this.#map.delete(this.#map.keys().next().value);
}
}
}
const cache = new LRUCache(3);
cache.set("one", 1);
cache.set("two", 2);
cache.set("three", 3);
cache.set("four", 4); // 这将导致 'one' 被移除
console.log(cache.get("one")); // 应该返回 null
console.log(cache.get("two")); // 应该返回 2
console.log(cache.get("three")); // 应该返回 3
console.log(cache.get("four")); // 应该返回 4
cache.set("five", 5); // 这将导致 'two' 被移除
console.log(cache.get("two")); // 应该返回 null
Least Recently Used
最新推荐文章于 2024-08-01 15:03:43 发布