按collect内的布尔值排序

时间:2014-04-22 07:12:30

标签: groovy

我有地图列表

students.collect {
                [
                    id: it.id,
                    cell: [it.id, checkIfTrue(it.id, sessionsByUser)]
                ]

            }

这给出了o / p

[[id:7, cell:[7, false]], 
 [id:8, cell:[8, true]], 
 [id:9, cell:[9, false]]

基于某些条件我需要使用布尔值对此列表进行排序。所以真的应该是

[[id:8, cell:[8, true]],
 [id:7, cell:[7, false]], 
 [id:9, cell:[9, false]]

可以这样做吗?

2 个答案:

答案 0 :(得分:3)

您无法对收集进行排序,但您可以在收集后进行排序:

  students.collect {
    [
      id: it.id,
      cell: [it.id, checkIfTrue(it.id, sessionsByUser)]
    ]

  }.sort {
    it.cell[1]
  }

答案 1 :(得分:0)

您需要的是sort方法,而不是collect

def m = [
    [id:1,cell:[1,false]],
    [id:2,cell:[2,true]],
    [id:3,cell:[3,false]],
]

assert [
[id:2,cell:[2,true]],
[id:1,cell:[1,false]],
[id:3,cell:[3,false]],
] == m.sort {!it.cell[1]}