我想删除 a 的最旧成员LinkedHashSet
,我知道有一个removeEldestEntry
方法我必须重写(Java doc for removeEldestEntry
),但我想我必须定义initial capacity
并且load factor
我不在乎,我只是想删除最近最少访问的元素(这里的访问是指put
当它已经在集合中或被读取时)
有什么办法不覆盖removeEldestEntry
吗?
我想删除 a 的最旧成员LinkedHashSet
,我知道有一个removeEldestEntry
方法我必须重写(Java doc for removeEldestEntry
),但我想我必须定义initial capacity
并且load factor
我不在乎,我只是想删除最近最少访问的元素(这里的访问是指put
当它已经在集合中或被读取时)
有什么办法不覆盖removeEldestEntry
吗?
我知道有一个我必须重写的 removeEldestEntry 方法
这个陈述是错误的,因为LinkedHashSet
HAS-ALinkedHashMap
而不是 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 的接口)的Set
愿景。LinkedHashMap
removeEldestEntry
MAX_ENTRIES
作为您将定义的自定义常量。