gpt4 book ai didi

java - LinkedHashSet 实现 LRU

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:27 25 4
gpt4 key购买 nike

我想删除 LinkedHashSet 中最早的成员,我知道有一个 removeEldestEntry 方法我必须重写 ( Java doc for removeEldestEntry ),但我想我必须定义 initial capacityload factor 我不在乎,我只是想删除最近最少访问的元素(这里通过访问我的意思是当它已经在集合中或被读取时被 put)

有什么方法可以不覆盖 removeEldestEntry 吗?

最佳答案

I know that there's a removeEldestEntry method that I have to override

这个说法是错误的,因为 LinkedHashSet HAS-A LinkedHashMap 而不是 IS-A。

您可以使用有用的(虽然不是众所周知的)Collections.newSetFromMap方法:

Set<String> mySet = Collections.newSetFromMap(new LinkedHashMap<String, Boolean>(){
protected boolean removeEldestEntry(Map.Entry<String, Boolean> eldest) {
return size() > MAX_ENTRIES;
}
});

因此,它会返回一个 Set 实现您的自定义 removeEldestEntry 方法的 LinkedHashMap(一个 Set-Like 接口(interface))。

MAX_ENTRIES 是您定义的自定义常量。

关于java - LinkedHashSet 实现 LRU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255572/

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