org.springframework.util

## Class ConcurrentLruCache<K,V>

- java.lang.Object
- - org.springframework.util.ConcurrentLruCache<K,V>

- Type Parameters:
    `K` - the type of the key used for cache retrieval
    `V` - the type of the cached values

      public class ConcurrentLruCache<K,V>
      extends Object

  Simple LRU (Least Recently Used) cache, bounded by a specified cache limit.

  This implementation is backed by a `ConcurrentHashMap` for storing the cached values and a `ConcurrentLinkedDeque` for ordering the keys and choosing the least recently used key when the cache is at full capacity.

  Since:
    5.3
  Author:
    Brian Clozel, Juergen Hoeller
  See Also:
    `get(K)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ConcurrentLruCache(int sizeLimit, Function<K,V> generator)` Create a new cache instance with the given limit and generator function.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clear()` Immediately remove all entries from this cache.
    `boolean` | `contains(K key)` Determine whether the given key is present in this cache.
    `V` | `get(K key)` Retrieve an entry from the cache, potentially triggering generation of the value.
    `boolean` | `remove(K key)` Immediately remove the given key and any associated value.
    `int` | `size()` Return the current size of the cache.
    `int` | `sizeLimit()` Return the maximum number of entries in the cache (0 indicates no caching, always generating a new value).

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

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

- - ### Constructor Detail

    - #### ConcurrentLruCache

          public ConcurrentLruCache(int sizeLimit,
                                    Function<K,V> generator)

      Create a new cache instance with the given limit and generator function.
      Parameters:
        `sizeLimit` - the maximum number of entries in the cache (0 indicates no caching, always generating a new value)
        `generator` - a function to generate a new value for a given key

  - ### Method Detail

    - #### get

          public V get(K key)

      Retrieve an entry from the cache, potentially triggering generation of the value.
      Parameters:
        `key` - the key to retrieve the entry for
      Returns:
        the cached or newly generated value

    - #### contains

          public boolean contains(K key)

      Determine whether the given key is present in this cache.
      Parameters:
        `key` - the key to check for
      Returns:
        `true` if the key is present, `false` if there was no matching key

    - #### remove

          public boolean remove(K key)

      Immediately remove the given key and any associated value.
      Parameters:
        `key` - the key to evict the entry for
      Returns:
        `true` if the key was present before, `false` if there was no matching key

    - #### clear

          public void clear()

      Immediately remove all entries from this cache.

    - #### size

          public int size()

      Return the current size of the cache.
      See Also:
        `sizeLimit()`

    - #### sizeLimit

          public int sizeLimit()

      Return the maximum number of entries in the cache (0 indicates no caching, always generating a new value).
      See Also:
        `size()`