所以我有一个类型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(11/02/2015 11:10的分钟转换)
我怎么能做到这一点?
P.S我试过myMap.groupBy{ _._1 / (60))
它不起作用?有关如何在scala中实现此功能的任何建议?
提前致谢。
答案 0 :(得分:4)
你几乎在那里:
myMap.groupBy{ _._1 / (60)).map {case (sec, map) => sec -> map.values.sum}
还要考虑转换时使用TimeUnit。对于你的情况:
TimeUnit.SECONDS.toMinutes(_._1)
答案 1 :(得分:0)
这是一个类似于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)