valor sort por ordenar objetos metodo manejo lista fechas fecha arreglo array java date sorting grails groovy

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.