Maps
map.class looks up a key named "class". Use map.getClass() instead.
def person = [name: "Ana", age: 30] // LinkedHashMap (keeps insertion order)
def empty = [:]
def keyVar = "city"
def dynamicKey = [(keyVar): "Pune"] // parentheses: use the variable's value as the key
def numKeys = [1: "one", 2: "two"]
println person.name, person['age'], person.get('name'), person.getOrDefault('x', 'none')
person.email = "[email protected]" // add
person['phone'] = "123"
person.remove('phone')
println person.containsKey('name'), person.containsValue(30), 'name' in person
println person.keySet(), person.values(), person.size()
person.each { k, v -> println "$k: $v" }
person.eachWithIndex { entry, i -> println "$i ${entry.key}" }
println person.collect { k, v -> "$k=$v" }.join("&")
println person.findAll { k, v -> v instanceof String }
println person.find { it.value == 30 }?.key
println person.collectEntries { k, v -> [k.toUpperCase(), v] }
println person.subMap(['name']), person + [country: 'IN'], person - [age: 30]
println person.sort { it.key }, person.groupBy { it.value.getClass().simpleName }
println person.withDefault { "N/A" }.missing // default value for missing keys
println [b: 2, a: 1].min { it.value }, person.any { it.
…