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