Package: org.codehaus.groovy.runtime.memoize

## [Java] Class LRUCache<K, V>

- org.codehaus.groovy.runtime.memoize.LRUCache

- All Implemented Interfaces and Traits:
    MemoizeCache

      @ThreadSafe
      public final class LRUCache<K, V>
      extends Object
      implements MemoizeCache

  A cache backed by a ConcurrentLinkedHashMap

- - ### Constructor Summary

    Constructors
    Constructor and description
    `LRUCache (int maxCacheSize)`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `cleanUpNullReferences()` Remove all entries holding SoftReferences to gc-evicted objects.
    `` | `public V` | `get(K key)`
    `` | `public V` | `getAndPut(K key, ValueProvider<? super K, ? extends V> valueProvider)` Try to get the value from cache.
    `` | `public V` | `put(K key, V value)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Constructor Detail

    - #### public LRUCache(int maxCacheSize)

  - ### Method Detail

    - #### public void cleanUpNullReferences()

      Remove all entries holding SoftReferences to gc-evicted objects.

    - #### @Override public V get(K key)

    - #### @Override public V getAndPut(K key, 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.

      Parameters:
        key
        `valueProvider` - provide the value if the associated value not found

    - #### @Override public V put(K key, V value)