以下课程:
class Report
{
String firstName
String lastName
}
我需要先按姓氏,然后按名字对 人 列表进行排序。
我尝试使用此代码制作它:
persons.sort{[it.lastName, it.firstName]}
但它没有设法这样做。
还有其他建议要按两个标准进行排序吗?
答案 0 :(得分: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}