je ne suis pas en mesure de trier une liste d'objets par date dans l'ordre décroissant
disons que c'est ma classe
class Thing {
Profil profil
String status = 'ready'
Date dtCreated = new Date()
}
à l'intérieur de la méthode, je crée le List things
List profiles = profil.xyz?.collect { Profil.collection.findOne(_id:it) }
List things = []
puis je remplis la liste avec chaque chose associée de chaque profil
profiles.each() { profile,i ->
if(profile) {
things += Thing.findAllByProfilAndStatus(profile, "ready", [sort: 'dtCreated', order: 'desc']) as
}
bien, maintenant things
a beaucoup de choses en elle, malheureusement le [order: 'desc']
a été appliqué à chaque ensemble de choses et j'ai besoin de trier la liste entière par dtCreated, qui fonctionne à merveille comme
things.sort{it.dtCreated}
Très bien, maintenant toutes les choses sont triées par date mais dans le mauvais ordre, la chose la plus récente est la dernière de la liste
donc j'ai besoin de trier dans la direction opposée, je n'ai rien trouvé sur le web qui m'a fait avancer, j'ai essayé des trucs comme
things.sort{-it.dtCreated} //doesnt work
things.sort{it.dtCreated}.reverse() //has no effect
et je ne trouve aucune approche groovy pour une opération aussi standard, peut-être que quelqu'un a une idée de comment je peux trier mes choses par date dans l'ordre décroissant? il doit y avoir quelque chose comme orm que j'ai utilisé ci-dessus [sort: 'dtCreated', order: 'desc']
ou n'est-ce pas?
pour tout indice merci d'avance
Au lieu de
things.sort{-it.dtCreated}
tu pourrais essayer
things.sort{a,b-> b.dtCreated<=>a.dtCreated}
reverse () ne fait rien car il crée une nouvelle liste au lieu de muter l'existant.
things.sort{it.dtCreated}
things.reverse(true)
devrait marcher
things = things.reverse()
ainsi que.
Que diriez-vous
things.sort{it.dtCreated}
Collections.reverse(things)
Regardez ici pour quelques utilitaires de liste plus utiles