sort list by date in descending order - groovy madness
Solution 1
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.
Solution 2
How about
things.sort{it.dtCreated}
Collections.reverse(things)
Look here for some more useful list utilities
Related videos on Youtube
Comments
-
john Smith almost 2 years
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 profileprofiles.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 bydtCreated
. That works wonderful likethings.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?-
vegemite4me over 9 years
things.sort{-it.dtCreated.time}
-
-
john Smith almost 11 yearsthank you so much, the first one woorks great for me, i tryed things.reverse() before, not working for my case but things.reverse(true) is working thanks
-
MushyPeas about 4 yearsalso
reverseEach
if you wanna loop over it anyway afterwards.