【问题标题】:Groovy list sort on two criteriaGroovy 列表按两个标准排序
【发布时间】:2014-09-22 16:34:52
【问题描述】:

我有一个对象列表,这些对象都是相同类型的,并且有两个属性:“uniqueId”和“secondaryId”。我想先按“uniqueId”对这个列表进行排序,然后对每个 uniqueId 按“secondaryId”排序,这样这个列表:

唯一ID/次要ID 5/3 2/6 5/8 2/5

排序后将如下所示: 2/5 2/6 5/3 5/8

我似乎无法完全正确地理解语法:

return searchResults.sort{[it.uniqueId, it.secondaryId]}

是我尝试开始的,但没有成功。

【问题讨论】:

标签: grails groovy


【解决方案1】:

您可以将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]]

【讨论】:

    猜你喜欢
    • 2012-11-25
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多