上这节课:
class Report
{
String firstName
String lastName
}
我需要先按姓氏对我的“人员”列表进行排序,然后再按名字进行排序。
我试图使用以下代码来实现:
persons.sort{[it.lastName, it.firstName]}
但是它没有做到这一点。
还有其他建议可以按两个标准进行排序吗?
最佳答案
使用最新版本的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}