Groovy - 使用两个标准对我的对象列表进行排序

时间:2014-05-07 08:11:29

标签: sorting groovy

以下课程:

class Report
{
  String firstName
  String lastName
}

我需要先按姓氏,然后按名字 列表进行排序。

我尝试使用此代码制作它:

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

但它没有设法这样做。
还有其他建议要按两个标准进行排序吗?

1 个答案:

答案 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}