org.pentaho.reporting.libraries.base.util
Class LFUMap

java.lang.Object
  extended by org.pentaho.reporting.libraries.base.util.LFUMap
All Implemented Interfaces:
Serializable, Cloneable

public class LFUMap
extends Object
implements Serializable, Cloneable

A Least-Frequently-Used Map.

This is not a real map in the sense of the Java-Collections-API. This is a slimmed down version of a Least-Frequently-Used map with no unnecessary extra stuff like iterators or other costly but rarely used java.util.Collections features. The cache does not accept null-keys, and any attempt to store null-values will yield an error.

To remove a couple of ugly checks and thus improving performance, this map enforces a minimum size of 3 items.

Author:
Thomas Morgner
See Also:
Serialized Form

Constructor Summary
LFUMap(int cacheSize)
          Creates a new LFU-Map with a maximum size of cacheSize entries.
 
Method Summary
 void clear()
           
 Object clone()
           
 Object get(Object key)
          Return the entry for the given key.
 int getMaximumSize()
          Returns the defined maximum size.
 boolean isEmpty()
          Checks whether this map is empty.
 void put(Object key, Object value)
          Puts the given value into the map using the specified non-null key.
 void remove(Object key)
          Removes the entry for the given key.
 int size()
          Returns the number of items in this map.
 void validate()
          Validates the map's internal datastructures.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LFUMap

public LFUMap(int cacheSize)
Creates a new LFU-Map with a maximum size of cacheSize entries.

Parameters:
cacheSize - the maximum number of elements this map will be able to store.
Method Detail

clear

public void clear()

get

public Object get(Object key)
Return the entry for the given key. Any successful lookup moves the entry to the top of the list.

Parameters:
key - the lookup key.
Returns:
the value stored for the key or null.

put

public void put(Object key,
                Object value)
Puts the given value into the map using the specified non-null key. The new entry is added as first entry in the list of recently used values.

Parameters:
key - the key.
value - the value.

remove

public void remove(Object key)
Removes the entry for the given key.

Parameters:
key - the key for which an entry should be removed.

size

public int size()
Returns the number of items in this map.

Returns:
the number of items in the map.

isEmpty

public boolean isEmpty()
Checks whether this map is empty.

Returns:
true, if the map is empty, false otherwise.

getMaximumSize

public int getMaximumSize()
Returns the defined maximum size.

Returns:
the defines maximum size.

validate

public void validate()
Validates the map's internal datastructures. There should be no need to call this method manually.


clone

public Object clone()
             throws CloneNotSupportedException
Overrides:
clone in class Object
Throws:
CloneNotSupportedException