添加discussion:What 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()方法呢。由于它永远不会是满的,它会自动增加。我错过了这一点。很抱歉一两个问题。
提前致谢。
答案 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();
}
}