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

    All Methods Instance Methods Concrete Methods
    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 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>`