在Groovy中对列表进行排序

时间:2011-02-04 03:10:49

标签: list sorting groovy

很抱歉,如果这是一个直截了当的事情,我是Groovy的新手。我正在试图弄清楚如何在每个子列表中的“使用”键上对此列表进行排序,但我似乎无法弄明白:

[[name:foo, uses:2], [name:bar, uses:1], [name:baz, uses:4]]

我希望得到以下结果:

[[name:baz, uses:4], [name:foo, uses:2], [name:bar, uses:1]]

那里有人知道如何最好地处理这个问题吗?我检查了类似的问题,但找不到任何与Groovy有关的内容。

提前致谢。

3 个答案:

答案 0 :(得分:5)

最简单的方法是使用sort方法

def sorted = lists.sort( {a, b -> b["uses"] <=> a["uses"] } )
sorted.each { 
 println it
}

// prints
// [name:baz, uses:4]
// [name:foo, uses:2]
// [name:bar, uses:1]

答案 1 :(得分:3)

我想我想出来了......

sort{a,b -> b['uses'] <=> a['uses']}

...似乎可以解决问题。

答案 2 :(得分:3)

只想添加更短的版本

[[name:'foo', uses:2], [name:'bar', uses:1], [name:'baz', uses:4]].sort{-it.uses}​​​​​