Class LRUMap

All Implemented Interfaces:
Serializable, Cloneable, Map, BoundedMap, IterableMap, OrderedMap, SizedMap

public class LRUMap extends LRUMap implements SizedMap
Extension of the commons LRUMap that can change its maximum size.
Author:
Abe White
See Also:
  • Constructor Details

    • LRUMap

      public LRUMap()
    • LRUMap

      public LRUMap(int initCapacity)
    • LRUMap

      public LRUMap(int initCapacity, float loadFactor)
    • LRUMap

      public LRUMap(Map map)
  • Method Details

    • getMaxSize

      public int getMaxSize()
      Description copied from interface: SizedMap
      The maximum number of entries, or Integer.MAX_VALUE for no limit.
      Specified by:
      getMaxSize in interface SizedMap
    • setMaxSize

      public void setMaxSize(int max)
      Description copied from interface: SizedMap
      The maximum number of entries, or Integer.MAX_VALUE for no limit.
      Specified by:
      setMaxSize in interface SizedMap
    • overflowRemoved

      public void overflowRemoved(Object key, Object value)
      Description copied from interface: SizedMap
      Overridable callback for when an overflow entry is automatically removed.
      Specified by:
      overflowRemoved in interface SizedMap
    • maxSize

      public int maxSize()
      Description copied from class: LRUMap
      Gets the maximum size of the map (the bound).
      Specified by:
      maxSize in interface BoundedMap
      Overrides:
      maxSize in class LRUMap
      Returns:
      the maximum number of elements the map can hold
    • isFull

      public boolean isFull()
      Description copied from class: LRUMap
      Returns true if this map is full and no new mappings can be added.
      Specified by:
      isFull in interface BoundedMap
      Specified by:
      isFull in interface SizedMap
      Overrides:
      isFull in class LRUMap
      Returns:
      true if the map is full
    • removeLRU

      protected boolean removeLRU(AbstractLinkedMap.LinkEntry entry)
      Description copied from class: LRUMap
      Subclass method to control removal of the least recently used entry from the map.

      This method exists for subclasses to override. A subclass may wish to provide cleanup of resources when an entry is removed. For example:

       protected boolean removeLRU(LinkEntry entry) {
         releaseResources(entry.getValue());  // release resources held by entry
         return true;  // actually delete entry
       }
       

      Alternatively, a subclass may choose to not remove the entry or selectively keep certain LRU entries. For example:

       protected boolean removeLRU(LinkEntry entry) {
         if (entry.getKey().toString().startsWith("System.")) {
           return false;  // entry not removed from LRUMap
         } else {
           return true;  // actually delete entry
         }
       }
       
      The effect of returning false is dependent on the scanUntilRemovable flag. If the flag is true, the next LRU entry will be passed to this method and so on until one returns false and is removed, or every entry in the map has been passed. If the scanUntilRemovable flag is false, the map will exceed the maximum size.

      NOTE: Commons Collections 3.0 passed the wrong entry to this method. This is fixed in version 3.1 onwards.

      Overrides:
      removeLRU in class LRUMap
      Parameters:
      entry - the entry to be removed
      Returns:
      true
    • doWriteObject

      protected void doWriteObject(ObjectOutputStream out) throws IOException
      Description copied from class: LRUMap
      Writes the data necessary for put() to work in deserialization.
      Overrides:
      doWriteObject in class LRUMap
      Parameters:
      out - the output stream
      Throws:
      IOException - if an error occurs while writing to the stream
    • doReadObject

      protected void doReadObject(ObjectInputStream in) throws IOException, ClassNotFoundException
      Description copied from class: LRUMap
      Reads the data necessary for put() to work in the superclass.
      Overrides:
      doReadObject in class LRUMap
      Parameters:
      in - the input stream
      Throws:
      IOException - if an error occurs while reading from the stream
      ClassNotFoundException - if an object read from the stream can not be loaded