shortcut for creating a Map from a List in groovy?
collections, expandometaclass, groovy, java
Solution
I've recently came across the need to do exactly that: converting a list into a map. This question was posted before Groovy version 1.7.9 came out, so the method `collectEntries` didn't exist yet. It works exactly as the `collectMap` method that was proposed:
Map rowToMap(row) {
row.columns.collectEntries{[it.name, it.val]}
}
If for some reason you are stuck with an older Groovy version, the `inject` method can also be used (as proposed here). This is a slightly modified version that takes only one expression inside the closure (just for the sake of character saving!):
Map rowToMap(row) {
row.columns.inject([:]) {map, col -> map << [(col.name): col.val]}
}
The `+` operator can also be used instead of the `<<`.
Problem
I'd like some sorthand for this: ``` Map rowToMap(row) { def rowMap = [:]; row.columns.each{ rowMap[it.name] = it.val } return rowMap; } ``` given the way the GDK stuff is, I'd expect to be able to do something like: ``` Map rowToMap(row) { row.columns.collectMap{ [it.name,it.val] } } ``` but I haven't seen anything in the docs... am I missing something? or am I just way too lazy?