Class CommonCache<K,V>
java.lang.Object
org.codehaus.groovy.runtime.memoize.CommonCache<K,V>
- Type Parameters:
K- type of the keysV- type of the values
- All Implemented Interfaces:
Serializable,Map<K,,V> EvictableCache<K,,V> FlexibleCache<K,,V> MemoizeCache<K,,V> ValueConvertable<V,Object>
public class CommonCache<K,V>
extends Object
implements FlexibleCache<K,V>, ValueConvertable<V,Object>, Serializable
Represents a simple key-value cache, which is NOT thread safe and backed by a
Map instance- Since:
- 2.5.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.codehaus.groovy.runtime.memoize.EvictableCache
EvictableCache.Action<K,V, R>, EvictableCache.EvictionStrategy Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K extends Object,V extends Object> Nested classes/interfaces inherited from interface org.codehaus.groovy.runtime.memoize.MemoizeCache
MemoizeCache.ValueProvider<K,V> -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe default initial capacitystatic final floatThe default load factor -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a cache with unlimited sizeCommonCache(int maxSize) Constructs an LRU cache with the default initial capacityCommonCache(int initialCapacity, int maxSize) Constructs an LRU cache with the specified initial capacity and max size.CommonCache(int initialCapacity, int maxSize, EvictableCache.EvictionStrategy evictionStrategy) Constructs a cache with limited sizeCommonCache(Map<K, V> map) Constructs a cache backed by the specifiedMapinstance -
Method Summary
Modifier and TypeMethodDescriptionvoidInvoked when some of the held SoftReferences have been evicted by the garbage collector and so should be removed from the cache.clearAll()Clear the cachebooleancontainsKey(Object key) Determines if the cache contains an entry for the specified key.booleancontainsValue(Object value) Determines whether the cache contains the specified stored value.convertValue(V value) Returns the stored value unchanged.entrySet()Returns a live view of the cache entries.Gets a value from the cachegetAndPut(K key, MemoizeCache.ValueProvider<? super K, ? extends V> valueProvider) Try to get the value from cache.getAndPut(K key, MemoizeCache.ValueProvider<? super K, ? extends V> valueProvider, boolean shouldCache) Returns the value associated withkey, creating it with the supplied provider when necessary and optionally caching the result.booleanisEmpty()Returns whether the cache currently holds no entries.keys()Get all keys associated to cached valueskeySet()Returns a live view of the keys in this cache.Associates the specified value with the specified key in the cache.voidCopies all mappings from the supplied map into this cache.Remove the cached value by the keyintsize()Get the size of the cachetoString()Returns a string representation of the current cache contents.values()Get all cached valuesMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.codehaus.groovy.runtime.memoize.EvictableCache
clearMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Field Details
-
DEFAULT_LOAD_FACTOR
public static final float DEFAULT_LOAD_FACTORThe default load factor- See Also:
-
DEFAULT_INITIAL_CAPACITY
public static final int DEFAULT_INITIAL_CAPACITYThe default initial capacity- See Also:
-
-
Constructor Details
-
CommonCache
public CommonCache()Constructs a cache with unlimited size -
CommonCache
public CommonCache(int initialCapacity, int maxSize, EvictableCache.EvictionStrategy evictionStrategy) Constructs a cache with limited size- Parameters:
initialCapacity- initial capacity of the cachemaxSize- max size of the cacheevictionStrategy- LRU or FIFO, seeEvictableCache.EvictionStrategy
-
CommonCache
public CommonCache(int initialCapacity, int maxSize) Constructs an LRU cache with the specified initial capacity and max size. The LRU cache is slower thanLRUCache- Parameters:
initialCapacity- initial capacity of the LRU cachemaxSize- max size of the LRU cache
-
CommonCache
public CommonCache(int maxSize) Constructs an LRU cache with the default initial capacity- Parameters:
maxSize- max size of the LRU cache- See Also:
-
CommonCache
Constructs a cache backed by the specifiedMapinstance- Parameters:
map- theMapinstance
-
-
Method Details
-
get
Gets a value from the cache -
put
Associates the specified value with the specified key in the cache. -
getAndPut
Try to get the value from cache. If not found, create the value byMemoizeCache.ValueProviderand put it into the cache, at last return the value.- Specified by:
getAndPutin interfaceMemoizeCache<K,V> - Parameters:
key- the key to look upvalueProvider- provide the value if the associated value not found- Returns:
- the cached value
-
getAndPut
public V getAndPut(K key, MemoizeCache.ValueProvider<? super K, ? extends V> valueProvider, boolean shouldCache) Returns the value associated withkey, creating it with the supplied provider when necessary and optionally caching the result.- Specified by:
getAndPutin interfaceFlexibleCache<K,V> - Parameters:
key- the key to look upvalueProvider- supplies a value when the key is not cachedshouldCache- whether a newly created value should be stored- Returns:
- the cached or newly created value
-
values
Get all cached values -
entrySet
Returns a live view of the cache entries. -
keys
Get all keys associated to cached values- Specified by:
keysin interfaceEvictableCache<K,V> - Returns:
- all keys
-
containsValue
Determines whether the cache contains the specified stored value.- Specified by:
containsValuein interfaceMap<K,V> - Parameters:
value- the value whose presence should be tested- Returns:
trueif the cache contains the value
-
containsKey
Determines if the cache contains an entry for the specified key.- Specified by:
containsKeyin interfaceEvictableCache<K,V> - Specified by:
containsKeyin interfaceMap<K,V> - Parameters:
key- key whose presence in this cache is to be tested.- Returns:
- true if the cache contains a mapping for the specified key
-
size
public int size()Get the size of the cache -
isEmpty
public boolean isEmpty()Returns whether the cache currently holds no entries. -
remove
Remove the cached value by the key -
putAll
Copies all mappings from the supplied map into this cache. -
keySet
Returns a live view of the keys in this cache. -
clearAll
Clear the cache- Specified by:
clearAllin interfaceEvictableCache<K,V> - Returns:
- returns the content of the cleared map
-
cleanUpNullReferences
public 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.- Specified by:
cleanUpNullReferencesin interfaceMemoizeCache<K,V>
-
toString
Returns a string representation of the current cache contents. -
convertValue
Returns the stored value unchanged.- Specified by:
convertValuein interfaceValueConvertable<K,V> - Parameters:
value- the stored value- Returns:
value
-