Comment inverser le tri d'une collection Groovy?
Je suis le tri d'une liste basée sur plusieurs champs.
sortedList.sort {[it.getAuthor(), it.getDate()]}
Cela fonctionne bien, mais je veux la date à être renversé et reverse()
ne fonctionne pas.
Comment puis-je trier l'auteur dans l'ordre croissant mais en quelque sorte de la date dans l'ordre décroissant (inverse) de l'ordre?
Exemple de ce que je veux:
Author Date
Adam 12/29/2011
Adam 12/20/2011
Adam 10/10/2011
Ben 11/14/2011
Curt 10/17/2010
Exemple de ce que j'ai:
Author Date
Adam 10/10/2011
Adam 12/20/2011
Adam 12/29/2011
Ben 11/14/2011
Curt 10/17/2010
OriginalL'auteur ubiquibacon | 2011-12-29
Vous devez vous connecter pour publier un commentaire.
Pour le multi-propriété sortes comme cela, vous aurez le plus de contrôle si vous utilisez le
sort()
avec une fermeture ou d'un traitement de référence, par exemple:Ou une version plus concise (avec l'aimable autorisation de Ted Naleid):
J'ai couru dans la groovysh sur la liste suivante:
Et a reçu le correctement triées:
vous pouvez aussi raccourcir jusqu'à un liner (et éviter explicite si vérifier) avec: sortedList.tri { a, b -> un.auteur <=> b.l'auteur ?: b.date <=> un.date }
Merci pour l'astuce, je l'avais considéré comme le shortening, mais a décidé de le quitter pour des raisons de compréhension. Je vais mettre le vôtre en il y, bien que, par souci d'exhaustivité.
Lovin' que one-liner =D
OriginalL'auteur Rob Hruska