Class LRUMap

    • Constructor Detail

      • LRUMap

        public LRUMap()
      • LRUMap

        public LRUMap​(int initCapacity)
      • LRUMap

        public LRUMap​(int initCapacity,
                      float loadFactor)
      • LRUMap

        public LRUMap​(java.util.Map map)
    • Method Detail

      • 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​(java.lang.Object key,
                                    java.lang.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​(java.io.ObjectOutputStream out)
                              throws java.io.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:
        java.io.IOException - if an error occurs while writing to the stream
      • doReadObject

        protected void doReadObject​(java.io.ObjectInputStream in)
                             throws java.io.IOException,
                                    java.lang.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:
        java.io.IOException - if an error occurs while reading from the stream
        java.lang.ClassNotFoundException - if an object read from the stream can not be loaded