我想删除 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 方法
这个陈述是错误的,因为LinkedHashSetHAS-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愿景。LinkedHashMapremoveEldestEntry
MAX_ENTRIES作为您将定义的自定义常量。