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);
        }
    }
}

 

 

 

 

posted @ 2021-09-16 21:04  jailbreakaaaa  阅读(124)  评论(0)    收藏  举报