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

roe*_*gol 2 sorting groovy

以下课程:

class Report
{
  String firstName
  String lastName
}
Run Code Online (Sandbox Code Playgroud)

我需要梳理我的先通过名单由,然后第一个名字.

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

persons.sort{[it.lastName, it.firstName]}
Run Code Online (Sandbox Code Playgroud)

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

Opa*_*pal 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}
Run Code Online (Sandbox Code Playgroud)