2011-02-04 129 views
0

對不起,如果這是一個簡單的事情,我是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有關的任何內容。

在此先感謝。

回答

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] 
+0

我想我們回答了這個在準確的同時,最簡單的方法。 :) – supersighs 2011-02-04 04:10:33

3

我想我想通了......

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

...似乎這樣的伎倆。

3

只是想補充一個較短的版本

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