我无法按照下降顺序按日期对对象列表进行排序
让我们说这是我的课程
class Thing {
Profil profil
String status = 'ready'
Date dtCreated = new Date()
}
在我正在创建List things
List profiles = profil.xyz?.collect { Profil.collection.findOne(_id:it) }
List things = []
然后我用每个配置文件的每个相关Thing填充列表
profiles.each() { profile,i ->
if(profile) {
things += Thing.findAllByProfilAndStatus(profile, "ready", [sort: 'dtCreated', order: 'desc']) as
}
好吧,现在things
里面有很多东西,不幸的是[order: 'desc']
被应用到每一组东西上,我需要通过dtCreated对整个列表进行排序,这样就像
things.sort{it.dtCreated}
很好,现在所有的东西都按日期排序,但排序错误,最近的事情是列表中的最后一件事
所以我需要向相反的方向排序,我没有在网上找到任何可以向前推进的东西,尝试像
这样的东西 things.sort{-it.dtCreated} //doesnt work
things.sort{it.dtCreated}.reverse() //has no effect
并且我没有找到任何这种标准操作的常规方法,也许有人暗示我如何按照命令顺序按日期排序我的东西?我必须在[sort: 'dtCreated', order: 'desc']
之上使用像orm这样的东西
或者不是吗?
提前感谢任何提示
答案 0 :(得分:85)
而不是
things.sort{-it.dtCreated}
你可以尝试
things.sort{a,b-> b.dtCreated<=>a.dtCreated}
reverse()不执行任何操作,因为它会创建一个新列表,而不是改变现有列表。
things.sort{it.dtCreated}
things.reverse(true)
应该有效
things = things.reverse()
。
答案 1 :(得分:5)
答案 2 :(得分:-7)
您也可以使用things.first()和things.last()来提取列表的第一个和最后一个元素。