我有一个对象列表,它们都是相同的类型,有两个属性'uniqueId'和'secondaryId'。我想首先按'uniqueId'排序此列表,然后按'secondaryId'为每个uniqueId排序,以便列表:
的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]}
是我想要开始的但是没有用。
答案 0 :(得分:5)
您可以the elvis operator使用second sorting criteria:
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]]