我有一个对象列表,这些对象都是同一类型并且有两个属性“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]}
是我试图开始的,但没有奏效。
最佳答案
您可以使用 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]]
关于grails - Groovy 列表根据两个标准排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25978948/