我相信一定有更好的方法来问这个问题,但我想不出。
考虑这个案例类:
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”这样的建议不会有帮助