2014-12-05 151 views
3

我有以下斯卡拉列表 -基於使用scala對元素進行分組的元素總和?

List((192.168.1.1,8590298237), (192.168.1.1,8590122837), (192.168.1.1,4016236988), 
(192.168.1.1,1018539117), (192.168.1.1,2733649135), (192.168.1.2,16755417009), 
(192.168.1.1,3315423529), (192.168.1.2,1523080027), (192.168.1.1,1982762904), 
(192.168.1.2,6148851261), (192.168.1.1,1070935897), (192.168.1.2,276531515092), 
(192.168.1.1,17180030107), (192.168.1.1,8352532280), (192.168.1.3,8590120563), 
(192.168.1.3,24651063), (192.168.1.3,4431959144), (192.168.1.3,8232349877), 
(192.168.1.2,17493253102), (192.168.1.2,4073818556), (192.168.1.2,42951186251)) 

我想下面的輸出 -

List((192.168.1.1, sum of all values of 192.168.1.1), 
(192.168.1.2, sum of all values of 192.168.1.2), 
(192.168.1.3, sum of all values of 192.168.1.3)) 

如何使用Scala的第一個元素分組得到名單第二元素的總和?

回答

3

這裏您可以使用Scala中的groupBy函數。你確實在輸入數據中有一些問題,ip數字或者其他什麼必須是字符串和數字Longs。這裏是groupBy函數的例子:

val data = ??? // Your list 
val sumList = data.groupBy(_._1).map(x => (x._1, x._2.map(_._2).sum)).toList 

如果答案是正確的接受它,或評論,我會解釋一些。

相關問題