org.apache.commons.collections.map
Class LRUMap

java.lang.Object
  |
  +--org.apache.commons.collections.map.AbstractHashedMap
        |
        +--org.apache.commons.collections.map.AbstractLinkedMap
              |
              +--org.apache.commons.collections.map.LRUMap
All Implemented Interfaces:
BoundedMap, java.lang.Cloneable, IterableMap, java.util.Map, OrderedMap, java.io.Serializable

public class LRUMap
extends AbstractLinkedMap
implements BoundedMap, java.io.Serializable, java.lang.Cloneable

A Map implementation with a fixed maximum size which removes the least recently used entry if an entry is added when full.

The least recently used algorithm works on the get and put operations only. Iteration of any kind, including setting the value by iteration, does not change the order. Queries such as containsKey and containsValue or access via views also do not change the order.

The map implements OrderedMap and entries may be queried using the bidirectional OrderedMapIterator. The order returned is least recently used to most recently used. Iterators from map views can also be cast to OrderedIterator if required.

All the available iterators can be reset back to the start by casting to ResettableIterator and calling reset().

Since:
Commons Collections 3.0 (previously in main package v1.0)
Version:
$Revision: 1.8 $ $Date: 2004/01/14 21:43:10 $
Author:
James Strachan, Morgan Delagrange, Stephen Colebourne
See Also:
Serialized Form

Constructor Summary
LRUMap()
          Constructs a new empty map with a maximum size of 100.
LRUMap(int maxSize)
          Constructs a new, empty map with the specified maximum size.
LRUMap(int maxSize, float loadFactor)
          Constructs a new, empty map with the specified initial capacity and load factor.
LRUMap(java.util.Map map)
          Constructor copying elements from another map.
 
Method Summary
 java.lang.Object clone()
          Clones the map without cloning the keys or values.
 java.lang.Object get(java.lang.Object key)
          Gets the value mapped to the key specified.
 boolean isFull()
          Returns true if this map is full and no new mappings can be added.
 int maxSize()
          Gets the maximum size of the map (the bound).
 
Methods inherited from class org.apache.commons.collections.map.AbstractLinkedMap
clear, containsValue, firstKey, lastKey, mapIterator, nextKey, orderedMapIterator, previousKey
 
Methods inherited from class org.apache.commons.collections.map.AbstractHashedMap
containsKey, entrySet, equals, hashCode, isEmpty, keySet, put, putAll, remove, size, toString, values
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
clear, containsKey, containsValue, entrySet, equals, hashCode, isEmpty, keySet, put, putAll, remove, size, values
 

Constructor Detail

LRUMap

public LRUMap()
Constructs a new empty map with a maximum size of 100.


LRUMap

public LRUMap(int maxSize)
Constructs a new, empty map with the specified maximum size.

Parameters:
maxSize - the maximum size of the map
Throws:
java.lang.IllegalArgumentException - if the maximum size is less than one

LRUMap

public LRUMap(int maxSize,
              float loadFactor)
Constructs a new, empty map with the specified initial capacity and load factor.

Parameters:
maxSize - the maximum size of the map, -1 for no limit,
loadFactor - the load factor
Throws:
java.lang.IllegalArgumentException - if the maximum size is less than one
java.lang.IllegalArgumentException - if the load factor is less than zero

LRUMap

public LRUMap(java.util.Map map)
Constructor copying elements from another map.

The maximum size is set from the map's size.

Parameters:
map - the map to copy
Throws:
java.lang.NullPointerException - if the map is null
java.lang.IllegalArgumentException - if the map is empty
Method Detail

get

public java.lang.Object get(java.lang.Object key)
Gets the value mapped to the key specified.

This operation changes the position of the key in the map to the most recently used position (first).

Specified by:
get in interface java.util.Map
Overrides:
get in class AbstractHashedMap
Parameters:
key - the key
Returns:
the mapped value, null if no match

isFull

public boolean isFull()
Returns true if this map is full and no new mappings can be added.

Specified by:
isFull in interface BoundedMap
Returns:
true if the map is full

maxSize

public int maxSize()
Gets the maximum size of the map (the bound).

Specified by:
maxSize in interface BoundedMap
Returns:
the maximum number of elements the map can hold

clone

public java.lang.Object clone()
Clones the map without cloning the keys or values.

Overrides:
clone in class AbstractHashedMap
Returns:
a shallow clone


Copyright © 2001-2004 Apache Software Foundation. All Rights Reserved.