如何限制java哈希表中的条目数?

9 java hashtable

是否有一种技术可以指定一个数字n,这样当插入第(n + 1)个条目时,首先删除最旧的条目,确保哈希表的大小始终限制为n?

Kri*_*ian 28

LinkedHashMap就是这样做的,请参阅removeEldestEntry方法的javadoc .

像这样的东西应该做的伎俩,这将删除最旧的插入条目:

Map map = new LinkedHashMap() {
    @Override
    protected boolean removeEldestEntry(Entry eldest) {
        return size() > N;
    }
};
Run Code Online (Sandbox Code Playgroud)

您还可以通过在构造函数中指定它来删除最早访问的条目:

    Map map = new LinkedHashMap(16, 0.75f, true) {
        @Override
        protected boolean removeEldestEntry(Entry eldest) {
            return size() > N;
        }
    };
Run Code Online (Sandbox Code Playgroud)


sbl*_*ndy 5

您正在寻找LRU缓存吗?这是一篇基于LinkedHashMap的博客文章.