[Grails / Groovy] Map条目的最小值

时间:2011-02-09 11:47:45

标签: grails groovy

查询:如何从Grails

中的地图中提取最小值

到目前为止,我发现以下代码可以从groovy中的地图中获取最小值

["Java":1, "Groovy":4, "JavaScript":2].min{it.value}

但它没有在Grails工作

我尝试过以下代码

def map = ["Java":1, "Groovy":4, "JavaScript":2]
println map.min{it.value}
assert map.min{it.value}==1

提前致谢

2 个答案:

答案 0 :(得分:3)

如果您想要地图中的最小值,您可以执行以下操作:

def map = ["Java":1, "Groovy":4, "JavaScript":2]
println map.values().min()
assert map.values().min() == 1

修改

此外,closure accepting version of map.min自1.7.6以来一直在Groovy中,而Grails(从v1.3.6开始)使用Groovy 1.7.5

答案 1 :(得分:0)

min()不返回参数闭包返回的最小值,它返回闭包返回最小值的集合的元素。

map.min {it.value}是有效的通话,但它不是值。它是MapEntry,具有keyvalue属性。所以map.min{it.value}.value会这样做。