按日期降序排列列表 - 时髦的疯狂

2022-09-01 00:49:19

我无法按日期降序对对象列表进行排序

假设这是我的班级Thing

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 
                 }

好吧,现在里面有很多东西,不幸的是,它已应用于每组内容,i我需要按对整个列表进行排序。这很有效,就像things[order: 'desc']dtCreated

            things.sort{it.dtCreated}

很好,现在所有的东西都是按日期排序的,但顺序错误,最近的东西是列表中的最后一件事

所以我需要朝相反的方向排序,我没有在网上找到任何让我前进的东西,我尝试了这样的东西

            things.sort{-it.dtCreated} //doesnt work
            things.sort{it.dtCreated}.reverse() //has no effect

而且我没有为这样的标准操作找到任何时髦的方法,也许有人暗示我如何按日期降序对东西进行排序?一定有我上面用过的orm之类的东西,不是吗?[sort: 'dtCreated', order: 'desc']


答案 1

而不是

things.sort{-it.dtCreated}

你可以试试

things.sort{a,b-> b.dtCreated<=>a.dtCreated}

reverse() 不执行任何操作,因为它会创建一个新列表,而不是改变现有列表。

things.sort{it.dtCreated}
things.reverse(true)

应该工作

things = things.reverse()

也。


答案 2

怎么样

things.sort{it.dtCreated}
Collections.reverse(things)

在此处查找一些更有用的列表实用程序


推荐