この質問をするためのより良い方法があるに違いないと思いますが、思いつきませんでした。
次のケース クラスを検討してください。
case class UserLocation(id: Int, dateTime: DateTime, lat: Double, lon: Double)
すべてList[UserLocation]
のユーザーのすべての場所の履歴があり、このリストをフィルタリングして、各ユーザーの最新の場所のみを取得したいと考えています。
これが私がやった方法です:
implicit def dateTimeOrdering: Ordering[DateTime] = Ordering.fromLessThan(_ isAfter _)
val locations: List[UserLocation] = bigListOfUserLocations()
val groupedById = locations.groupBy(_.id)
val sortedByDate = groupedById.map(_._2.sortBy(_.dateTime))
val finalList = sortedByDate.map(_.head)
これはうまくいきますが、私が知りたいのは、これを行うためのより良い方法があれば、パフォーマンスや読みやすさを改善することです
重要:これは主に学術的な質問です。リストを操作してこれを達成するための最もパフォーマンス的または最も慣用的な方法を知りたいので、「リストを受け取る前にデータベースで xyz を試してください」などの提案は役に立ちません。