是否有一种技术可以指定一个数字n,这样当插入第(n + 1)个条目时,首先删除最旧的条目,确保哈希表的大小始终限制为n?
LinkedHashMap就是这样做的,请参阅removeEldestEntry方法的javadoc .
像这样的东西应该做的伎俩,这将删除最旧的插入条目:
Map map = new LinkedHashMap() { @Override protected boolean removeEldestEntry(Entry eldest) { return size() > N; } };
您还可以通过在构造函数中指定它来删除最早访问的条目:
Map map = new LinkedHashMap(16, 0.75f, true) { @Override protected boolean removeEldestEntry(Entry eldest) { return size() > N; } };
您正在寻找LRU缓存吗?这是一篇基于LinkedHashMap的博客文章.