【发布时间】:2016-07-15 12:40:12
【问题描述】:
我相信一定有更好的方法来问这个问题,但我想不出。
考虑这个案例类:
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 之类的建议在您收到清单之前” 不会有帮助
【问题讨论】:
标签: scala scala-collections list-manipulation