Java 创建后增加LRUMap的大小

Java 创建后增加LRUMap的大小,java,hashmap,Java,Hashmap,加上: 如果我使用org.apache.commons.collections.map.LRUMap,当LRUMap达到最大值时,它的大小会增加 如果我实例化了LRUMap maxSize= 1024 LRUMap myCacheMap = new LRUMap(maxSize) 如果myCacheMap达到第1024个键值对或条目,并且如果我添加了另一个元素,它将自动增加到2048。如果它是自动增加的,那么为什么我们要使用isFull()方法呢。因为它永远不会满

加上:

如果我使用org.apache.commons.collections.map.LRUMap,当LRUMap达到最大值时,它的大小会增加

如果我实例化了LRUMap

        maxSize= 1024
       LRUMap myCacheMap = new LRUMap(maxSize)
如果myCacheMap达到第1024个键值对或条目,并且如果我添加了另一个元素,它将自动增加到2048。如果它是自动增加的,那么为什么我们要使用isFull()方法呢。因为它永远不会满,它会自动增加。我在这方面遗漏了一点。很抱歉一次问了两个问题

提前感谢。

关键是它有一个固定的最大大小,当达到该大小时不会自动增加。当地图已满时添加的新条目将导致删除最近使用最少的条目

一种映射实现,具有固定的最大大小,如果在条目满时添加条目,则会删除最近使用最少的条目

因此,
isFull()
是有意义的。如果返回true,则您知道向映射添加新条目将删除最近使用最少的条目。

关键是它有一个固定的最大大小,当达到该大小时不会自动增加。当地图已满时添加的新条目将导致删除最近使用最少的条目

一种映射实现,具有固定的最大大小,如果在条目满时添加条目,则会删除最近使用最少的条目


因此,
isFull()
是有意义的。如果返回true,则您知道向映射添加新条目将删除最近使用最少的条目。

Max size永远不会增加。这是任何基于最小最近使用(LRU)算法的map的基本原理

当LRUMap达到其最大大小时,它只会从映射中删除最近使用最少的条目

下面是来自LRUMap.put()源代码的片段


最大尺寸永远不会增加。这是任何基于最小最近使用(LRU)算法的map的基本原理

当LRUMap达到其最大大小时,它只会从映射中删除最近使用最少的条目

下面是来自LRUMap.put()源代码的片段


谢谢你的两个答案。还有一件事。那么为什么LRUMap中有一个负载系数呢。我实际上还认为,正如我们所说的,有一个MaxSize和一个isFull()方法,大小不应该增加,因为它是LRU。然后我看到了关于荷载系数的相关讨论,因此我提出了问题。那么负载因子在LRU中起作用了吗?在创建LRUMap时,如果您将maxsize指定为<1,则会使用默认的_容量(16)创建映射。从那时起,它可以增加到默认的最大大小(100)。在此场景中使用负载系数和阈值保持。一旦地图达到最大尺寸,它将永远不会增加。感谢你的两个答案。还有一件事。那么为什么LRUMap中有一个负载系数呢。我实际上还认为,正如我们所说的,有一个MaxSize和一个isFull()方法,大小不应该增加,因为它是LRU。然后我看到了关于荷载系数的相关讨论,因此我提出了问题。那么负载因子在LRU中起作用了吗?在创建LRUMap时,如果您将maxsize指定为<1,则会使用默认的_容量(16)创建映射。从那时起,它可以增加到默认的最大大小(100)。在此场景中使用负载系数和阈值保持。一旦地图达到最大尺寸,它将永远不会增加。
if ( mapSize >= maximumSize ) {

        // don't retire LRU if you are just
        // updating an existing key
        if (!containsKey(key)) {
            // lets retire the least recently used item in the cache
           removeLRU();
        }
    }