Package groovy.lang
Class MapWithDefault<K,V>
java.lang.Object
groovy.lang.MapWithDefault<K,V>
- All Implemented Interfaces:
Map<K,
V>
A wrapper for Map which allows a default value to be specified using a closure.
Normally not instantiated directly but used via the DGM
withDefault
method.- Since:
- 1.7.1
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
boolean
containsKey
(Object key) boolean
containsValue
(Object value) entrySet()
boolean
Returns the value to which the specified key is mapped, or the default value as specified by the initializing closure if this map contains no mapping for the key.int
hashCode()
boolean
isEmpty()
keySet()
static <K,
V> Map<K, V> newInstance
(Map<K, V> m, boolean autoGrow, boolean autoShrink, Closure<V> initClosure) Decorates the given Map allowing a default value to be specified.static <K,
V> Map<K, V> newInstance
(Map<K, V> m, Closure<V> initClosure) Decorates the given Map allowing a default value to be specified.Associates the specified value with the specified key in this map.void
int
size()
values()
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Method Details
-
newInstance
Decorates the given Map allowing a default value to be specified.- Parameters:
m
- a Map to wrapinitClosure
- the closure which when passed thekey
returns the default value- Returns:
- the wrapped Map
-
newInstance
public static <K,V> Map<K,V> newInstance(Map<K, V> m, boolean autoGrow, boolean autoShrink, Closure<V> initClosure) Decorates the given Map allowing a default value to be specified. Allows the behavior to be configured usingautoGrow
andautoShrink
parameters. The value ofautoShrink
doesn't alter any values in the initial wrapped map, but you can start with an empty map and useputAll
if you really need the minimal backing map value.- Parameters:
m
- a Map to wrapautoGrow
- when true, also mutate the map adding in this value; otherwise, don't mutate the map, just return to calculated valueautoShrink
- when true, ensure the key will be removed if attempting to store the default value using put or putAllinitClosure
- the closure which when passed thekey
returns the default value- Returns:
- the wrapped Map
- Since:
- 4.0.1
-
size
public int size() -
isEmpty
public boolean isEmpty() -
containsKey
- Specified by:
containsKey
in interfaceMap<K,
V>
-
containsValue
- Specified by:
containsValue
in interfaceMap<K,
V>
-
get
Returns the value to which the specified key is mapped, or the default value as specified by the initializing closure if this map contains no mapping for the key. IfautoGrow
is true and the initializing closure is called, the map is modified to contain the new key and value so that the calculated value is effectively cached if needed again. Otherwise, the map will be unchanged. -
put
Associates the specified value with the specified key in this map. IfautoShrink
is true, the initializing closure is called and if it evaluates to the value being stored, the value will not be stored and indeed any existing value will be removed. This can be useful when trying to keep the memory requirements small for large key sets where only a spare number of entries differ from the default. -
remove
-
putAll
-
clear
public void clear() -
keySet
-
values
-
entrySet
-
equals
-
hashCode
public int hashCode()
-