在groovy中从列表创建映射的快捷方式?

我想要一些苏尔坦:

将行映射到映射(行){
def rowMap=[:];
row.columns.each{rowMap[it.name]=it.val}
返回行映射;
}

考虑到GDK的工作方式,我希望能够做到以下几点:

将行映射到映射(行){
row.columns.collectMap{[it.name,it.val]}
}

但我在文件里什么都没看到。。。我错过什么了吗?还是我太懒了

我最近遇到了这样的需要:将列表转换为地图。这个问题是在Groovy 1.7.9版发布之前发布的,因此方法collectEntries还不存在。它的工作原理与所提出的collectMap方法完全相同:

将行映射到映射(行){
row.columns.collectEntries{[it.name,it.val]}
}

如果出于某种原因,您一直使用较旧的Groovy版本,那么也可以使用inject方法(如本文所建议的)。这是一个稍加修改的版本,在闭包中只接受一个表达式(只是为了保存字符!):

将行映射到映射(行){
row.columns.inject([:]){map,col->map<[(col.name):col.val]}
}

也可以使用+运算符代替&lt&lt

发表评论