2015-11-02 61 views
0

所以我有一個簡單的地圖類型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(..) 

我的地圖是這樣,現在我想顯示由11:10和11:11之間分鐘分組的累積計數結果,所以我的輸出將是如下

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

1446462600 -> 6 

1446462600(11/02/2015 11:10分鐘會話) 我該如何存檔? P.S我試過myMap.groupBy{ _._1/(60))它不起作用?任何關於如何在scala中實現的建議?

在此先感謝。

回答

4

你幾乎有:

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

而且考慮轉換TIMEUNIT使用。爲你的情況:

TimeUnit.SECONDS.toMinutes(_._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) 
+0

非常感謝你,它現在工作得很好。分組後,我錯過了數值的總和。 –