java - 如何在达到限制时通过删除最旧的条目来限制 map 的最大大小

标签 java caching collections map

我想要一个具有最大尺寸的 Map 实现。我想将其用作缓存,因此一旦达到限制,就会删除最旧的条目。

我也不想引入对任何 3rd 方库的依赖。

最佳答案

您可以使用 LinkedHashMap像这样

您可以通过 LRU 或 FIFO 移除。

public static <K, V> Map<K, V> createLRUMap(final int maxEntries) {
    return new LinkedHashMap<K, V>(maxEntries*10/7, 0.7f, true) {
        @Override
        protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
            return size() > maxEntries;
        }
    };
}

关于java - 如何在达到限制时通过删除最旧的条目来限制 map 的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11469045/

相关文章:

java - 使用java集合存储一个键但多个值?

java - HashMap发生碰撞时如何取值?

java - 为什么没有函数 Stream.flatMap()?

php - apc_exist() 不存在?

css - Safari CSS - 使自定义样式表的版本无效

java - 为什么 EnumMap 不是 Java 中的 SortedMap?

java - 何时使用 getInstanceOf 而不是构造函数

java - 如何保证类加载

Java 如何制作包启动器,以打开项目中的包

现代硬件的算法?