Scala - 地图的groupBy键

Scala - groupBy keys of a map

所以我有一个 Map [Long,Int] 类型的简单地图。

我在地图中的键是时间戳类型,如下所示 (1446462630,1446462640,1446462650) 是我的地图的键。

1446462630 = which is 11/02/2015 11:10:30(Epoch time in sceonds)
1446462640 = which is 11/02/2015 11:10:40(..)
1446462650 = which is 11/02/2015 11:10:50(..)

我的地图如下

1446462630->2
1446462640->1
1446462650->3

所以现在我想显示 11:10 和 11:11 之间按分钟分组的累计计数结果,所以我的输出将是

1446462600 -> 6

1446462600(2015 年 2 月 11 日的分钟转换 11:10) 我怎样才能做到这一点? P.S 我试过了 myMap.groupBy{ _._1 / (60)) 还是不行?关于如何在 scala 中实现这个的任何建议?

提前致谢。

你快到了:

myMap.groupBy{ _._1 / (60)).map {case (sec, map) => sec -> map.values.sum}

还要考虑转化的 TimeUnit 使用情况。对于您的情况:

TimeUnit.SECONDS.toMinutes(_._1)

这是一个类似于 nyavro 的答案,但针对您的情况使用了过滤器。

myMap.groupBy(_._1/60).filterKeys(key => 
     key >= 1446462600/60 && key <= 1446462600/60+60
).map{
  case (k, v) => k*60 -> v.map(_._2).sum
}

res1: scala.collection.immutable.Map[Int,Int] = Map(1446462600 -> 6)