|
Groovy JDK |
Method Summary | |
---|---|
boolean
|
any(Closure closure)
Iterates over the entries of a map, and checks whether a predicate is valid for at least one entry. |
boolean
|
asBoolean()
Coerce a map instance to a boolean value. |
Map
|
asImmutable()
A convenience method for creating an immutable map. |
Map
|
asSynchronized()
A convenience method for creating a synchronized Map. |
Object
|
asType(Class clazz)
Coerces this map to the given type, using the map's keys as the public method names, and values as the implementation. |
Collection
|
collect(Collection collection, Closure closure)
Iterates through this Map transforming each entry into a new value using the closure as a transformer, returning a list of transformed values. |
List
|
collect(Closure closure)
Iterates through this Map transforming each entry into a new value using the closure as a transformer, returning a list of transformed values. |
Map
|
each(Closure closure)
Allows a Map to be iterated through using a closure. |
Map
|
eachWithIndex(Closure closure)
Allows a Map to be iterated through using a closure. |
boolean
|
every(Closure closure)
Iterates over the entries of a map, and checks whether a predicate is valid for all entries. |
Map$Entry
|
find(Closure closure)
Finds the first entry matching the closure condition. |
Map
|
findAll(Closure closure)
Finds all entries matching the closure condition. |
Object
|
get(Object key, Object defaultValue)
Looks up an item in a Map for the given key and returns the value - unless there is no entry for the given key in which case add the default value to the map and return that. |
Object
|
getAt(Object key)
Support the subscript operator for a Map. |
Map
|
groupBy(Closure closure)
Groups the members of a map into sub maps determined by the supplied mapping closure. |
Map
|
groupEntriesBy(Closure closure)
Groups all map entries into groups determined by the supplied mapping closure. |
Map
|
leftShift(Map$Entry entry)
Overloads the left shift operator to provide an easy way to append Map.Entry values to a Map. |
Map
|
leftShift(Map other)
Overloads the left shift operator to provide an easy way to put one maps entries into another map. |
Map
|
plus(Map right)
Returns a new Map containing all entries from left and right ,
giving precedence to right .
|
Map
|
plus(Collection entries)
Returns a new Map containing all entries from self and entries ,
giving precedence to entries .
|
Map
|
putAll(Collection entries)
Provides an easy way to append multiple Map.Entry values to a Map. |
Object
|
putAt(Object key, Object value)
A helper method to allow lists to work with subscript operators |
Map
|
reverseEach(Closure closure)
Allows a Map to be iterated through in reverse order using a closure. |
Map
|
sort(Closure closure)
Sorts the elements from the given map into a new ordered map using the closure as a comparator to determine the ordering. |
Map
|
sort(Comparator comparator)
Sorts the elements from the given map into a new ordered Map using the specified key comparator to determine the ordering. |
Map
|
sort()
Sorts the elements from the given map into a new ordered Map using the natural ordering of the keys to determine the ordering. |
SpreadMap
|
spread()
Synonym for Map#toSpreadMap. |
Map
|
subMap(Collection keys)
Creates a sub-Map containing the given keys. |
String
|
toMapString()
Returns the string representation of this map. |
SpreadMap
|
toSpreadMap()
Returns a new SpreadMap from this map.
|
Map
|
withDefault(Closure init)
Wraps a map using the delegate pattern with a wrapper that intercepts all calls to get(key) .
|
Method Detail |
---|
public boolean any(Closure closure)
assert [2:3, 4:5, 5:10].any { key, value -> key * 2 == value } assert ![2:3, 4:5, 5:10].any { entry -> entry.key == entry.value * 2 }
closure
- the 1 or 2 arg closure predicate used for matching.public boolean asBoolean()
assert [:] as Boolean == false assert [a:2] as Boolean == true
public Map asImmutable()
public Map asSynchronized()
public Object asType(Class clazz)
clazz
- the target type.public Collection collect(Collection collection, Closure closure)
assert [a:1, b:2].collect( [] as HashSet ) { key, value -> key*value } == ["a", "bb"] as Set assert [3:20, 2:30].collect( [] as HashSet ) { entry -> entry.key * entry.value } == [60] as Set
collection
- the Collection to which the mapped values are added.closure
- the closure used for mapping, which can take one (Map.Entry) or two (key, value) parameters.public List collect(Closure closure)
assert [a:1, b:2].collect { key, value -> key*value } == ["a", "bb"] assert [3:20, 2:30].collect { entry -> entry.key * entry.value } == [60, 60]
closure
- the closure used to map each element of the collection.public Map each(Closure closure)
def result = "" [a:1, b:3].each { key, value -> result += "$key$value" } assert result == "a1b3"
def result = "" [a:1, b:3].each { entry -> result += entry } assert result == "a=1b=3"In general, the order in which the map contents are processed cannot be guaranteed. In practise, specialized forms of Map, e.g. a TreeMap will have its contents processed according to the natural ordering of the map.
closure
- the 1 or 2 arg closure applied on each entry of the map.public Map eachWithIndex(Closure closure)
def result = "" [a:1, b:3].eachWithIndex { key, value, index -> result += "$index($key$value)" } assert result == "0(a1)1(b3)"
def result = "" [a:1, b:3].eachWithIndex { entry, index -> result += "$index($entry)" } assert result == "0(a=1)1(b=3)"
closure
- a 2 or 3 arg Closure to operate on each item.public boolean every(Closure closure)
def map = [a:1, b:2.0, c:2L] assert !map.every { key, value -> value instanceof Integer } assert map.every { entry -> entry.value instanceof Number }
closure
- the 1 or 2 arg Closure predicate used for matching.public Map$Entry find(Closure closure)
assert [a:1, b:3].find { it.value == 3 }.key == "b"
closure
- a 1 or 2 arg Closure condition.public Map findAll(Closure closure)
If the self
map is one of TreeMap, LinkedHashMap, Hashtable
or Properties, the returned Map will preserve that type, otherwise a HashMap will
be returned.
def result = [a:1, b:2, c:4, d:5].findAll { it.value % 2 == 0 } assert result.every { it instanceof Map.Entry } assert result*.key == ["b", "c"] assert result*.value == [2, 4]
closure
- a 1 or 2 arg Closure condition applying on the entries.public Object get(Object key, Object defaultValue)
def map=[:] map.get("a", []) << 5 assert map == [a:[5]]
key
- the key to lookup the value of.defaultValue
- the value to return and add to the map for this key if
there is no entry for the given key.public Object getAt(Object key)
def map = [a:10] assert map["a"] == 10
key
- an Object as a key for the map.public Map groupBy(Closure closure)
If the self
map is one of TreeMap, LinkedHashMap, Hashtable
or Properties, the returned Map will preserve that type, otherwise a HashMap will
be returned.
def result = [a:1,b:2,c:3,d:4,e:5,f:6].groupBy { it.value % 2 } assert result == [0:[b:2, d:4, f:6], 1:[a:1, c:3, e:5]]
closure
- a closure mapping entries on keys.public Map groupEntriesBy(Closure closure)
def result = [a:1,b:2,c:3,d:4,e:5,f:6].groupBy { it.value % 2 } assert result[0]*.key == ["b", "d", "f"] assert result[1]*.value == [1, 3, 5]
closure
- a 1 or 2 arg Closure mapping entries on keys.public Map leftShift(Map$Entry entry)
entry
- a Map.Entry to be added to the Map..public Map leftShift(Map other)
map1 << map2
; otherwise it's just a synonym for
putAll
though it returns the original map rather than
being a void
method. Example usage:
def map = [a:1, b:2] map << [c:3, d:4] assert map == [a:1, b:2, c:3, d:4]
other
- another Map whose entries should be added to the original Map..public Map plus(Map right)
Map
containing all entries from left
and right
,
giving precedence to right
. Any keys appearing in both Maps
will appear in the resultant map with values from the right
operand. If the left
map is one of TreeMap, LinkedHashMap, Hashtable
or Properties, the returned Map will preserve that type, otherwise a HashMap will
be returned.
Roughly equivalent to Map m = new HashMap(); m.putAll(left); m.putAll(right); return m;
but with some additional logic to preserve the left
Map type for common cases as
described above.
assert [a:10, b:20] + [a:5, c:7] == [a:5, b:20, c:7]
right
- a Map.public Map plus(Collection entries)
Map
containing all entries from self
and entries
,
giving precedence to entries
. Any keys appearing in both Maps
will appear in the resultant map with values from the entries
operand. If self
map is one of TreeMap, LinkedHashMap, Hashtable
or Properties, the returned Map will preserve that type, otherwise a HashMap will
be returned.
entries
- a Collection of Map.Entry items to be added to the Map..public Map putAll(Collection entries)
entries
- a Collection of Map.Entry items to be added to the Map..public Object putAt(Object key, Object value)
key
- an Object as a key for the map.value
- the value to put into the map.public Map reverseEach(Closure closure)
closure
- the 1 or 2 arg closure applied on each entry of the map.public Map sort(Closure closure)
def map = [a:5, b:3, c:6, d:4].sort { a, b -> a.value <=> b.value } assert map == [b:3, d:4, a:5, c:6]
closure
- a Closure used as a comparator.public Map sort(Comparator comparator)
def map = [ba:3, cz:6, ab:5].sort({ a, b -> a[-1] <=> b[-1] } as Comparator) assert map*.value == [3, 5, 6]
closure
- a Closure used as a comparator.public Map sort()
map = [ba:3, cz:6, ab:5].sort() assert map*.value == [5, 3, 6]
public SpreadMap spread()
public Map subMap(Collection keys)
assert [1:10, 2:20, 4:40].subMap( [2, 4] ) == [2:20, 4:40]
keys
- a Collection of keys.public String toMapString()
[one:1, two:2, three:3]
.public SpreadMap toSpreadMap()
SpreadMap
from this map.
For examples, if there is defined a function like as
, then all of the following three have the same meaning.def fn(a, b, c, d) { return a + b + c + d }
println fn(a:1, [b:2, c:3].toSpreadMap(), d:4) println fn(a:1, *:[b:2, c:3], d:4) println fn(a:1, b:2, c:3, d:4)
public Map withDefault(Closure init)
get(key)
. If an unknown key is found, a default value will be
stored into the Map before being returned. The default value stored will be the
result of calling the supplied Closure with the key as the parameter to the Closure.
Example usage:
def map = [a:1, b:2].withDefault{ k -> k.toCharacter().isLowerCase() ? 10 : -10 } def expected = [a:1, b:2, c:10, D:-10] assert expected.every{ e -> e.value == map[e.key] } def constMap = [:].withDefault{ 42 } assert constMap.foo == 42 assert constMap.size() == 1
init
- a Closure which is passed the unknown key.
|
Groovy JDK |