您好我正在学习Scala,我有以下案例类的Seq对象:
case class HistoryCounter(time: DateTime, counter:Int)
现在,我想根据时间戳counter
合并time
的值。获取time
在同一天或同一周的所有计数器的总和。
你怎么能这样做?折叠或地图之类的集合函数是否能够执行此操作?
答案 0 :(得分:5)
如果你有一个List
个案例类list
,那么一种方法是这样的:
val counts =
list.groupBy(_.time).map{
case (k, v) => (k, v.map(_.counter).sum)
}
或者更简洁:
list.groupBy(_.time).mapValues(_.map(_.counter).sum)