Scala结合了Seq of Timestamps

时间:2015-04-01 17:36:13

标签: scala functional-programming scala-collections

您好我正在学习Scala,我有以下案例类的Seq对象:

case class HistoryCounter(time: DateTime, counter:Int)

现在,我想根据时间戳counter合并time的值。获取time在同一天或同一周的所有计数器的总和。

你怎么能这样做?折叠或地图之类的集合函数是否能够执行此操作?

1 个答案:

答案 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)