Class LRUCache<K,​V>

  • All Implemented Interfaces:
    MemoizeCache<K,​V>

    @ThreadSafe
    public final class LRUCache<K,​V>
    extends Object
    implements MemoizeCache<K,​V>
    A cache backed by a ConcurrentLinkedHashMap
    • Constructor Detail

      • LRUCache

        public LRUCache​(int maxCacheSize)
    • Method Detail

      • put

        public V put​(K key,
                     V value)
        Description copied from interface: MemoizeCache
        Associates the specified value with the specified key in the cache.
        Specified by:
        put in interface MemoizeCache<K,​V>
        Parameters:
        key - key with which the specified value is to be associated
        value - value to be associated with the specified key
        Returns:
        null, or the old value if the key associated with the specified key.
      • get

        public V get​(K key)
        Description copied from interface: MemoizeCache
        Gets a value from the cache
        Specified by:
        get in interface MemoizeCache<K,​V>
        Parameters:
        key - the key whose associated value is to be returned
        Returns:
        the value, or null, if it does not exist.
      • getAndPut

        public V getAndPut​(K key,
                           MemoizeCache.ValueProvider<? super K,​? extends V> valueProvider)
        Try to get the value from cache. If not found, create the value by MemoizeCache.ValueProvider and put it into the cache, at last return the value. The operation is completed atomically.
        Specified by:
        getAndPut in interface MemoizeCache<K,​V>
        Parameters:
        key -
        valueProvider - provide the value if the associated value not found
        Returns:
        the cached value
      • cleanUpNullReferences

        public void cleanUpNullReferences()
        Remove all entries holding SoftReferences to gc-evicted objects.
        Specified by:
        cleanUpNullReferences in interface MemoizeCache<K,​V>