Package org.codehaus.groovy.runtime.memoize

# Class LRUCache<K,V>

java.lang.Object
org.codehaus.groovy.runtime.memoize.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

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface org.codehaus.groovy.runtime.memoize.MemoizeCache

  `MemoizeCache.ValueProvider<K,V>`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `LRUCache(int maxCacheSize)`
  Creates an LRU cache with the supplied maximum size.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `cleanUpNullReferences()`
  Remove all entries holding SoftReferences to gc-evicted objects.
  `V`
  `get(K key)`
  Returns the value associated with the supplied key.
  `V`
  `getAndPut(K key, MemoizeCache.ValueProvider<? super K,? extends V> valueProvider)`
  Try to get the value from cache.
  `V`
  `put(K key, V value)`
  Associates the specified value with the specified key in this cache.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### LRUCache

    public LRUCache(int maxCacheSize)
    Creates an LRU cache with the supplied maximum size.
    Parameters:
      `maxCacheSize` - the maximum number of cached entries

- ## Method Details

  - ### put

    public V put(K key, V value)
    Associates the specified value with the specified key in this cache.
    Specified by:
      `put` in interface `MemoizeCache<K,V>`
    Parameters:
      `key` - the key with which the value is to be associated
      `value` - the value to cache
    Returns:
      the previous value associated with `key`, or `null`

  - ### get

    public V get(K key)
    Returns the value associated with the supplied key.
    Specified by:
      `get` in interface `MemoizeCache<K,V>`
    Parameters:
      `key` - the key to look up
    Returns:
      the cached value, or `null` if none is present

  - ### 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` - the key to look up
      `valueProvider` - provide the value if the associated value not found
    Returns:
      the cached or newly created value

  - ### cleanUpNullReferences

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