web-dev-qa-db-ja.com

リストを降順で日付順に並べ替える-Groovy Madness

オブジェクトのリストを日付順にソートすることはできません

これが私のクラスのものだと言うことができます

class Thing {

Profil profil
String status = 'ready'
Date dtCreated = new Date()
}

メソッド内でList thingsを作成しています

            List profiles = profil.xyz?.collect { Profil.collection.findOne(_id:it) }

            List things = []

そして、各プロファイルの関連する各事柄をリストに追加します

            profiles.each() { profile,i ->
                if(profile) {
                    things += Thing.findAllByProfilAndStatus(profile, "ready", [sort: 'dtCreated', order: 'desc']) as 
                 }

さて、thingsにはたくさんのものがありますが、残念ながら[order: 'desc']が各セットに適用されたので、リスト全体をdtCreatedでソートする必要があります。

            things.sort{it.dtCreated}

うまく、今ではすべてのものが日付でソートされていますが、間違った順序で、最新のものはリストの最後のものです

反対の方向に並べ替える必要があります。ウェブ上で私を前に見たものは何も見つかりませんでした。

            things.sort{-it.dtCreated} //doesnt work
            things.sort{it.dtCreated}.reverse() //has no effect

そして、私はそのような標準的な操作のためのグルーヴィーなアプローチを見つけていません。上記の[sort: 'dtCreated', order: 'desc']で使用したormのようなものが必要ですか?

ヒントについては事前に感謝します

38
john Smith

の代わりに

things.sort{-it.dtCreated}

あなたが試すかもしれません

things.sort{a,b-> b.dtCreated<=>a.dtCreated}

reverse()は、既存のリストを変更する代わりに新しいリストを作成するため、何もしません。

things.sort{it.dtCreated}
things.reverse(true)

動作するはずです

things = things.reverse()

同様に。

87
aduchate

どう?

things.sort{it.dtCreated}
Collections.reverse(things)

here を参照して、さらに便利なリストユーティリティを探してください。

5
Java Devil