2014-05-07 24 views
2

根據這一類我的對象列表:Groovy中 - 排序使用兩個指標分析

class Report 
{ 
    String firstName 
    String lastName 
} 

我需要得到名字首先由姓氏然後排序我名單。

我嘗試使用這個代碼,以使:

persons.sort{[it.lastName, it.firstName]} 

但它並沒有成功地做到這一點。
有沒有其他建議可以按照兩個標準進行排序?

回答

5

隨着最新版本的groovy您可以通過@Sortable註釋來實現此目的。

第二種選擇是執行Comparable並使用spaceship<=>)運算符。

而這裏的樣品只是sort方法:

import groovy.transform.ToString 

@ToString 
class R { 
    def f 
    def l 
} 

def list = [new R(f: 'A', l: 'B'),new R(f: 'A', l: 'A'),new R(f: 'A', l: 'C'),new R(f: 'B', l: 'C')] 

list.sort {left, right -> left.l <=> right.l ?: left.f <=> right.f} 
+0

做工精細! 謝謝! – roeygol