我想删除的最年长的成员LinkedHashSet,我知道有一个removeEldestEntry,我要重写(方法为removeEldestEntry的Java文档
),但我想我必须定义initial capacity和load factor我不在乎,我只是想删除最近访问过的元素(这里通过访问我的意思是put当它已经在集合中或被读取时)
有没有办法不覆盖removeEldestEntry?
Mik*_*378 22
我知道有一个我必须覆盖的removeEldestEntry方法
这个陈述是错误的,因为LinkedHashSetHAS-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;
}
});
Run Code Online (Sandbox Code Playgroud)
因此,它将返回实现自定义方法Set的LinkedHashMap(类似Set的界面)的愿景removeEldestEntry.
MAX_ENTRIES 是你定义的自定义常量.