Package org.codehaus.groovy.runtime.memoize

# Interface MemoizeCache<K,V>

Type Parameters:
  `K` - type of the keys
  `V` - type of the values

All Known Subinterfaces:
  `EvictableCache<K,V>`

All Known Implementing Classes:
  `CommonCache`, `ConcurrentCommonCache`, `ConcurrentSoftCache`, `LRUCache`, `StampedCommonCache`, `UnlimitedConcurrentCache`

public interface MemoizeCache<K,V>
Represents a memoize cache with its essential methods

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `MemoizeCache.ValueProvider<K,V>`
  Represents a provider used to create value

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `cleanUpNullReferences()`
  Invoked when some of the held SoftReferences have been evicted by the garbage collector and so should be removed from the cache.
  `V`
  `get(K key)`
  Gets a value from the cache
  `default 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.

- ## Method Details

  - ### put

    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.

  - ### get

    V get(K 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.

  - ### getAndPut

    default 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.
    Parameters:
      `key` - the key to look up
      `valueProvider` - provide the value if the associated value not found
    Returns:
      the cached value

  - ### cleanUpNullReferences

    void cleanUpNullReferences()
    Invoked when some of the held SoftReferences have been evicted by the garbage collector and so should be removed from the cache. The implementation must ensure that concurrent invocations of all methods on the cache may occur from other threads and thus should protect any shared resources.