在這裏嘗試對以下內容進行多重排序時有點瘋狂。地圖組通過多種排序
case class WeeklyResults(
schedule: Schedule,
result: GameResult
)
val games = // returns correctly sorted List of WeeklyResults
repo.gameresult.findAllByDate(date)
事情出差錯時,我GROUPBY博弈日期(顯示每個比賽日的比賽日期頭)和ID(以團體之家/客隊對)作爲一個未排序的映射返回,樂趣;-)
val unsorted = // Map[JodaTime, Iterable[List[WeeklyResults]]]
games.groupBy(_.schedule.gameDate).mapValues(_.groupBy(_.schedule.id).values)
好吧,ListMap是一種獲取排序映射的方法,讓我們嘗試一下,以毫秒爲單位對遊戲日期JodaTime進行排序。
val sorted =
ListMap(unsorted.toList.sortBy(_._1.getMillis):_*)
都好,遊戲正在以正確的順序比賽日期排序的頭......但是,每個比賽日裏遊戲隨機排序;-(
所以,問題是,如何在地球可以我有點都是由遊戲的日期和比賽結果ID(其中id是比賽成績表,有效地在數據庫級別的排序順序的PK)
我試圖徒勞的各種組合:
unsorted.flatMap{x=>
ListMap(
Seq((x._1, x._2.map(_._2.sortBy(_.result.id)))).sortBy(_.1.getMillis)
:_*)
}
不管我做什麼,在Iterable[List[WeeklyResults]]
,整個上午走在這
1,這是正確的可迭代[列表[T]]是在分選而言開溜。我需要測試你的解決方案,看它是否有效;-) – virtualeyes
太糟糕了,不起作用,或者至少不是第一次嘗試。我想了Iterable [列表[T]根據groupby對遊戲結果的ID創建允許我通過比賽的結果列表(A,B)對映射。當我按照你的建議扁平化時,似乎配對消失了;結果發生匹配錯誤。 – virtualeyes