# 场景题

  • LRU缓存机制

# LRU缓存机制

// 1. 新数据插入到链表头部;
// 2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;
// 3. 当链表满的时候,将链表尾部的数据丢弃。
class LRUCache {
    constructor(capacity) {
        this.capacity = capacity
        this.map = new Map()
    }
    get(key) {
        let val = this.map.get(key)
        if (val === undefined) return -1
        this.map.delete(key)
        this.map.set(key, val)
        return val
    }
    put(key, val) {
        if (this.map.has(key)) this.map.delete(key)
        this.map.set(key, val)
        if (this.map.size > this.capacity) {
            this.map.delete(this.map.entries().next().value[0])
        }
    }
}

// 关于 map
const map = new Map([
    [1, 'a'],
    [2, 'b'],
    [3, 'c']
])
map.entries() // MapIterator {1 => "a", 2 => "b", 3 => "c"}
map.entries().next() // {value: Array(2), done: false}
map.entries().next().value[0] // 1
最后更新时间: 2/9/2023, 7:49:33 PM