要实现最近最少使用 (LRU) 缓存策略的工具类,可以使用 LinkedHashMap
数据结构来实现。
- 创建一个
LRUCache
类,实现 LRU 缓存策略。
class LRUCache<K, V> {
final int capacity;
final Map<K, V> cache;
LRUCache(this.capacity) : cache = LinkedHashMap<K, V>();
V get(K key) {
if (!cache.containsKey(key)) {
return null;
}
final value = cache.remove(key);
cache[key] = value;
return value;
}
void put(K key, V value) {
if (cache.containsKey(key)) {
cache.remove(key);
} else if (cache.length >= capacity) {
final oldestKey = cache.keys.first;
cache.remove(oldestKey);
}
cache[key] = value;
}
}
- 使用
LRUCache
类实现最近最少使用缓存策略。
void main() {
final cache = LRUCache<int, String>(3);
cache.put(1, 'One');
cache.put(2, 'Two');
cache.put(3, 'Three');
print(cache.get(1)); // Output: One
cache.put(4, 'Four');
print(cache.get(2)); // Output: null (因为 2 是最近最少使用的)
cache.put(5, 'Five');
print(cache.get(3)); // Output: null (因为 3 是最近最少使用的)
print(cache.get(4)); // Output: Four
}
上述代码示例中,我们创建了一个容量为 3 的 LRU 缓存,并将四个键值对放入缓存中。之后,我们分别获取其中的键 1
、2
、3
、4
并输出对应的值。根据 LRU 缓存策略,最近最少使用的键 2
、3
在被新键 5
替换后再次访问时将返回 null
。
希望以上回答对您有所帮助!