Package: org.codehaus.groovy.runtime.memoize

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

- org.codehaus.groovy.runtime.memoize.UnlimitedConcurrentCache

- All Implemented Interfaces and Traits:
    EvictableCache, Serializable

      @ThreadSafe
      public final class UnlimitedConcurrentCache<K, V>
      extends Object
      implements EvictableCache, Serializable

  A cache backed by a ConcurrentHashMap

- - ### Constructor Summary

    Constructors
    Constructor and description
    `UnlimitedConcurrentCache()` Constructs a cache with unlimited size
    `UnlimitedConcurrentCache(int initialCapacity)` Constructs a cache with unlimited size and set its initial capacity
    `UnlimitedConcurrentCache(Map<? extends K, ? extends V> m)` Constructs a cache and initialize the cache with the specified map

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `cleanUpNullReferences()` Replying on the ConcurrentHashMap thread-safe iteration implementation the method will remove all entries holding SoftReferences to gc-evicted objects.
    `` | `public Map<K, V>` | `clearAll()` Clear the cache
    `` | `public boolean` | `containsKey(Object key)` Determines if the cache contains an entry for the specified key.
    `` | `public boolean` | `containsValue(Object value)`
    `` | `public Set<Entry<K, V>>` | `entrySet()`
    `` | `public V` | `get(Object key)` Gets a value from the cache
    `` | `public V` | `getAndPut(K key, ValueProvider<? super K, ? extends V> valueProvider)` Try to get the value from cache.
    `` | `public boolean` | `isEmpty()`
    `` | `public Set<K>` | `keySet()`
    `` | `public Set<K>` | `keys()` Get all keys associated to cached values
    `` | `public V` | `put(K key, V value)` Associates the specified value with the specified key in the cache.
    `` | `public void` | `putAll(Map<? extends K, ? extends V> m)`
    `` | `public V` | `remove(Object key)` Remove the cached value by the key
    `` | `public int` | `size()` Get the size of the cache
    `` | `public Collection<V>` | `values()` Get all cached values

  - ### Inherited Methods Summary

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

- - ### Constructor Detail

    - #### public UnlimitedConcurrentCache()

      Constructs a cache with unlimited size

    - #### public UnlimitedConcurrentCache(int initialCapacity)

      Constructs a cache with unlimited size and set its initial capacity

      Parameters:
        `initialCapacity` - the initial capacity

    - #### public UnlimitedConcurrentCache(Map<? extends K, ? extends V> m)

      Constructs a cache and initialize the cache with the specified map

      Parameters:
        `m` - the map to initialize the cache

  - ### Method Detail

    - #### @Override
      public void cleanUpNullReferences()

      Replying on the ConcurrentHashMap thread-safe iteration implementation the method will remove all entries holding SoftReferences to gc-evicted objects.

    - #### @Override
      public Map<K, V> clearAll()

      Clear the cache

      Returns:
        returns the content of the cleared map

    - #### @Override
      public boolean containsKey(Object key)

      Determines if the cache contains an entry for the specified key.

      Parameters:
        `key` - key whose presence in this cache is to be tested.
      Returns:
        true if the cache contains a mapping for the specified key

    - #### @Override
      public boolean containsValue(Object value)

    - #### @Override
      public Set<Entry<K, V>> entrySet()

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

      Gets a value from the cache

      Parameters:
        `key` - the key whose associated value is to be returned
      Returns:
        the value, or null, if it does not exist.

    - #### @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.

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

    - #### @Override
      public boolean isEmpty()

    - #### @Override
      public Set<K> keySet()

    - #### @Override
      public Set<K> keys()

      Get all keys associated to cached values

      Returns:
        all keys

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

      Associates the specified value with the specified key in the cache.

      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.

    - #### @Override
      public void putAll(Map<? extends K, ? extends V> m)

    - #### @Override
      public V remove(Object key)

      Remove the cached value by the key

      Parameters:
        key
      Returns:
        returns the removed value

    - #### @Override
      public int size()

      Get the size of the cache

      Returns:
        the size of the cache

    - #### @Override
      public Collection<V> values()

      Get all cached values

      Returns:
        all cached values