grails - Groovy 列表根据两个标准排序

标签 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]}

是我试图开始的,但没有奏效。

最佳答案

您可以使用 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/

相关文章:

grails - Grails-@Transactional注释,用于生成简单的Controller

mongodb - 如何在 MongoDB 上的 Grails 集成测试中回滚事务

grails - 我应该花时间学习 Groovy/Grails 吗?

java - Katalon Debian headless 浏览器

java - Grails 内置测试

grails - Grails hasMany的背面有hasOne

tomcat - Grails 生产.War 部署

grails - 如何在Grails和Hadoop之间编写连接脚本?

java - 从java中转义groovy表达式绑定(bind)中的点

mongodb - 在Gradle上关闭MongoDB