I'm not able to sort a list of Objects by a Date in descending order
Let's say this is my class Thing
class Thing { Profil profil String status = 'ready' Date dtCreated = new Date() }
Inside the method I'm creating the List things
List profiles = profil.xyz?.collect { Profil.collection.findOne(_id:it) } List things = []
and then I populate the list with each associated Thing
of each profile
profiles.each() { profile,i -> if(profile) { things += Thing.findAllByProfilAndStatus(profile, "ready", [sort: 'dtCreated', order: 'desc']) as }
Alright, now things
has a lot of things in it, unfortunately the [order: 'desc']
was applied to each set of things and iI need to sort the whole list by dtCreated
. That works wonderful like
things.sort{it.dtCreated}
Fine, now all the things are sorted by date but in the wrong order, the most recent thing is the last thing in the list
So I need to sort in the opposite direction, I didn't find anything on the web that brought me forward, I tried stuff like
things.sort{-it.dtCreated} //doesnt work things.sort{it.dtCreated}.reverse() //has no effect
and I'm not finding any groovy approach for such a standard operation, maybe someone has a hint how I can sort my things by date in descending order ? There must be something like orm I used above [sort: 'dtCreated', order: 'desc']
or isn't it?
Sort in Descending order The sort() method accepts a reverse parameter as an optional argument. Setting reverse = True sorts the list in the descending order. Alternatively for sorted() , you can use the following code.
Instead of
things.sort{-it.dtCreated}
you might try
things.sort{a,b-> b.dtCreated<=>a.dtCreated}
reverse() does nothing because it creates a new list instead of mutating the existing one.
things.sort{it.dtCreated} things.reverse(true)
should work
things = things.reverse()
as well.
How about
things.sort{it.dtCreated} Collections.reverse(things)
Look here for some more useful list utilities
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With