Package lazyj

Class LRUMap<K,​V>

java.lang.Object
java.util.AbstractMap<K,​V>
java.util.HashMap<K,​V>
java.util.LinkedHashMap<K,​V>
lazyj.LRUMap<K,​V>
Type Parameters:
K - Key type
V - Value type
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.util.Map<K,​V>

public class LRUMap<K,​V>
extends java.util.LinkedHashMap<K,​V>
A Map with restricted size and LRU behavior (when the size is reached the oldest unused entry is deleted to make some space for the new entry).

The implementation is based on LinkedHashMap, thus it is not thread safe. Remember Collections.synchronizedMap(java.util.Map<K, V>).
Since:
Oct 26, 2007 (1.0.2)
Author:
costing
See Also:
Serialized Form
  • Nested Class Summary

    Nested classes/interfaces inherited from class java.util.AbstractMap

    java.util.AbstractMap.SimpleEntry<K extends java.lang.Object,​V extends java.lang.Object>, java.util.AbstractMap.SimpleImmutableEntry<K extends java.lang.Object,​V extends java.lang.Object>
  • Constructor Summary

    Constructors 
    Constructor Description
    LRUMap​(int iCacheSize)  
    LRUMap​(int iCacheSize, float fFactor)  
  • Method Summary

    Modifier and Type Method Description
    int getLimit()
    Get the maximum number of elements that will be stored in the cache
    protected boolean removeEldestEntry​(java.util.Map.Entry<K,​V> eldest)  

    Methods inherited from class java.util.LinkedHashMap

    clear, containsValue, entrySet, forEach, get, getOrDefault, keySet, replaceAll, values

    Methods inherited from class java.util.HashMap

    clone, compute, computeIfAbsent, computeIfPresent, containsKey, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, size

    Methods inherited from class java.util.AbstractMap

    equals, hashCode, toString

    Methods inherited from class java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface java.util.Map

    compute, computeIfAbsent, computeIfPresent, containsKey, equals, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, size
  • Constructor Details

    • LRUMap

      public LRUMap​(int iCacheSize)
      Parameters:
      iCacheSize - How many entries can be in this map at maximum. A negative value means "unlimited" size.
    • LRUMap

      public LRUMap​(int iCacheSize, float fFactor)
      Parameters:
      iCacheSize - How many entries can be in this map at maximum. A negative value means "unlimited" size.
      fFactor - Fill factor for the underlying LinkedHashMap
  • Method Details

    • getLimit

      public int getLimit()
      Get the maximum number of elements that will be stored in the cache
      Returns:
      size limit
    • removeEldestEntry

      protected boolean removeEldestEntry​(java.util.Map.Entry<K,​V> eldest)
      Overrides:
      removeEldestEntry in class java.util.LinkedHashMap<K,​V>