java - sort - ordenar la lista por fecha en orden descendente-groovy locura
ordenar un array java (3)
No puedo ordenar una lista de objetos por una fecha en orden decreciente
digamos que esta es mi cosa de clase
class Thing {
Profil profil
String status = ''ready''
Date dtCreated = new Date()
}
dentro del método estoy creando las List things
la List things
List profiles = profil.xyz?.collect { Profil.collection.findOne(_id:it) }
List things = []
y luego llené la lista con cada cosa asociada de cada perfil
profiles.each() { profile,i ->
if(profile) {
things += Thing.findAllByProfilAndStatus(profile, "ready", [sort: ''dtCreated'', order: ''desc'']) as
}
bien, ahora las things
tienen muchas cosas, desafortunadamente el [order: ''desc'']
se aplicó a cada conjunto de cosas y tengo que ordenar toda la lista por dTCreated, que funciona de maravilla como
things.sort{it.dtCreated}
Bien, ahora todas las cosas están ordenadas por fecha pero en orden incorrecto, lo último es lo último en la lista
entonces tengo que ordenar en la dirección opuesta, no encontré nada en la web que me sacara adelante, intenté cosas como
things.sort{-it.dtCreated} //doesnt work
things.sort{it.dtCreated}.reverse() //has no effect
y no estoy encontrando ningún enfoque maravilloso para una operación tan estándar, tal vez alguien tiene una pista de cómo puedo ordenar mis cosas por fecha en orden descendente. debe haber algo como orm que utilicé arriba [sort: ''dtCreated'', order: ''desc'']
o no?
para cualquier pista gracias de antemano
En lugar de
things.sort{-it.dtCreated}
puedes intentar
things.sort{a,b-> b.dtCreated<=>a.dtCreated}
reverse () no hace nada porque crea una nueva lista en lugar de mutar la existente.
things.sort{it.dtCreated}
things.reverse(true)
Deberia trabajar
things = things.reverse()
también.
Qué tal si
things.sort{it.dtCreated}
Collections.reverse(things)
Mire here algunas utilidades de lista más útiles
También puede usar things.first () y things.last () para extraer el primer y el último elemento de la lista.