基于使用scala对元素进行分组的元素总和?

时间:2014-12-05 13:38:12

标签: scala

我有以下scala list-

    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对第一个元素进行分组来获取列表中的第二个元素的总和?

1 个答案:

答案 0 :(得分: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

如果答案是正确的,请接受或评论,我会再解释一下。

相关问题