<script>
/**
* 用JS实现一个LRU缓存
*/
class LRUCache {
constructor(length) {
if (length < 1) {
throw new Error('invalid length')
}
this.length = length
this.map = new Map()
}
set(key, value) {
const map = this.map
if (map.has(key)) {
map.delete(key)
}
map.set(key, value)
if (map.size > this.length) {
map.delete(map.keys().next().value)
}
}
get(key) {
const map = this.map
if (!map.has(key)) {
return null
}
const value = map.get(key)
map.delete(key)
map.set(key, value)
return value
}
}
// 下面是测试代码
const c = new LRUCache(2)
c.set('a', 1)
c.set('b', 2)
c.set('c', 3)
c.set('a', 4)
c.get('c')
console.log(c);
</script>