我有一个GroovyRowResult带有两列的 groovy (使用 sql.rows)。第一列在 sql 中有一个 group by,所以它总是唯一的。
现在我想将整个结果转换成一个映射,其中包含第一列值作为键和第二列值作为值。我知道我可以对每一行都这样做(见下文),但想知道是否有更好的方法。我发现的唯一一件事是 entrySet(),它不起作用。错误是:
Message: No signature of method:
java.util.ArrayList.entrySet() is applicable for argument types: () values: [])
Run Code Online (Sandbox Code Playgroud)
所以我的每一行方式是:
def myMap = [:]
result.each {
myMap.put(it.colum1, it.column2)
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是,以某种方式进行查询,该查询将返回一个以第一列作为键,第二列作为值(或整行作为值)的映射。Zend 框架的一种 fetchAssoc() 方法。
你可以这样做:
def myMap = result.collectEntries {
[ it.column1, it.column2 ]
}
Run Code Online (Sandbox Code Playgroud)