创建后增加LRUMap的大小

时间:2014-08-02 17:23:14

标签: java hashmap

添加discussionWhat is the significance of load factor in HashMap?

如果我使用org.apache.commons.collections.map.LRUMap,一旦达到最大尺寸,LRUMap的大小就会增加。

如果我实例化LRUMap

        maxSize= 1024
       LRUMap myCacheMap = new LRUMap(maxSize)

如果myCacheMap到达第1024个键值对或条目,如果我添加了另一个元素,它将自动增加到2048。如果它自动增加,那么为什么我们有itFull()方法呢。由于它永远不会是满的,它会自动增加。我错过了这一点。很抱歉一两个问题。

提前致谢。

2 个答案:

答案 0 :(得分:2)

LRUMap的要点是它具有固定的最大尺寸,达到​​时不会自动增加。地图已满时添加的新条目会导致删除最近最少使用的条目。

  

具有固定最大大小的地图实施,如果在完整时添加条目,则会删除最近最少使用的条目。

因此isFull()是有道理的。如果它返回true,您知道向地图添加新条目将删除最近最少使用的条目。

答案 1 :(得分:2)

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

当LRUMap达到其最大大小时,它只是从地图中删除最近最少使用的条目。

以下是来自LRUMap.put()

源代码的片段
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();
        }
    }