Groovy列表排序有两个标准

Ano*_*man 0 grails groovy

我有一个对象列表,它们都是相同的类型,有两个属性'uniqueId'和'secondaryId'.我想先为'uniqueId'排序此列表,然后为每个uniqueId排序'secondaryId',以便此列表:

UniqueID/SecondaryID 5/3 2/6 5/8 2/5

一旦排序将看起来像:2/5 2/6 5/3 5/8

我似乎无法正确地得到语法:

return searchResults.sort{[it.uniqueId, it.secondaryId]}
Run Code Online (Sandbox Code Playgroud)

是我想要开始,但这不起作用.

Wil*_*ill 5

您可以使用elvis运算符来获得第二个排序标准:

map = [[u:5, s:3],
 [u:2, s:6],
 [u:5, s:8],
 [u:2, s:5]]

sort = { m ->
  m.sort { e1, e2 -> 
    e1.u <=> e2.u ?: e1.s <=> e2.s 
  } 
}

assert sort(map) == [[u:2, s:5], 
 [u:2, s:6], 
 [u:5, s:3], 
 [u:5, s:8]]
Run Code Online (Sandbox Code Playgroud)