上这节课:

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}

10-07 18:57
查看更多