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)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `cleanUpNullReferences()`
  Remove all entries holding SoftReferences to gc-evicted objects.
  `V`
  `get(K key)`
  Gets a value from the cache
  `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 the 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)

- ## Method Details

  - ### 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>`