0

私は小さなイベントカレンダーに取り組んでおり、開始時間でイベントを並べ替えたいです!

startTime属性のgrailsでJodaTimeプラグインを使用しています。(http://www.grails.org/JodaTime+Plugin

では、どうすればこのデータ型で並べ替えることができますか?これは動作しません:

def sortedEvents = events.asList().sort({ a, b -> a.startTime <=> b.startTime } as Comparator)

あなたが私を助けてくれることを願っています!

ありがとう、whitenexx

/ EDIT /これは私がイベントを取得しているコードです:

    def getEventsNext(Location location) {
        def events = location.events.findAll { it.endTime >= new DateTime() }
    def sortedEvents = events.sort{it.startTime}
    System.out.println(sortedEvents); //test
    return sortedEvents
}

/ event / listアクションでは、すべてがg:sortableColumn(startTimeによる並べ替え)で正常に機能します。 / event / list

4

3 に答える 3

2

これを試して:

def sortedEvents = events.asList().sort{it.startTime}

ソート順を逆にするには、次を使用します。

def sortedEvents = events.asList().sort{-it.startTime}

参考までに、Groovy はこのsort()メソッドを に追加するので、が既に である場合は上記のコードからCollection削除できます。asList()eventsCollection

于 2011-09-06T10:12:02.927 に答える
1

compareToドメインクラスのメソッドをオーバーライドしてみてください。

例えば、

int compareTo(obj) {
    startTime.compareTo(obj.startTime)
} 

編集

イベントを次のように並べ替えます。

def sortedEvents = events.sort{e1,e2-> e1.startTime.compareTo(2.startTime)}

または@Donによって提案されたように、よりグルーヴィーな同等物

def sortedEvents = events.sort{e1,e2-> e1.startTime <=> e2.startTime}
于 2011-09-06T09:52:31.380 に答える
0

試す

def events = location.events.findAll { it.endTime.isAfterNow() }
def sortedEvents = events.sort{it.startTime.toDate()}

isAfterNow() の JavaDoc

于 2011-09-07T16:21:45.980 に答える