我有地图列表
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]]
可以这样做吗?
答案 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]}