gpt4 book ai didi

java-removeEldestEntry(Map.Entry eldest) 不起作用

转载 作者:行者123 更新时间:2023-12-01 11:17:02 25 4
gpt4 key购买 nike

当我使用 removeEldestEntry(Map.Entry eldest) 实现 LRU 缓存时 removeEldestEntry(Map.Entry eldest) 不起作用。

预期输出= 1,-1,2
实际输出 = 1,1,2

这里 set 方法放置条目,get 检索条目(如果存在),否则返回 -1:

import java.util.*;
import java.lang.*;
import java.io.*;

class LRUCache extends LinkedHashMap {
int capacity;
LinkedHashMap map = new LinkedHashMap(capacity ,1.1f,true);

public LRUCache(int capacity) {
this.capacity = capacity;
}

public int get(int key) {
if(map.containsKey(key)) {
return (int) map.get(key);
}
return -1;
}

public void set(int key, int value) {
map.put(key,value);
}

protected boolean removeEldestEntry(Map.Entry eldest) {
return map.size()>capacity;
}

public static void main(String args[]) {
LRUCache lru=new LRUCache(1);
int temp;

lru.set(2,1);
temp=lru.get(2);
System.out.println(temp);

lru.set(3,2);
temp=lru.get(2);
System.out.println(temp);

temp=lru.get(3);
System.out.println(temp);
}
}

最佳答案

您的removeEldestEntry从未被使用过。为了使用您的 removeEldestEntry,您的类必须扩展 LinkedHashMap 并且您应该覆盖 LinkedHashMapremoveEldestEntry .

如果您使用 LinkedHashMap 作为缓存,它将使用 removeEldestEntry 的默认实现,即:

protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
return false;
}

关于java-removeEldestEntry(Map.Entry eldest) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31700446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com