我有一个名称逗号分隔的名称值对列表,其中一些是重复的:
10, test1
11, test2
12, test3
13, test1
14, test2
我想对重复的值(按降序排列)求和,因此上面的列表变为:
25, test2
23, test1
12, test3
在 java 中,我将创建一个新列表并迭代现有列表。列表中的每个元素将与每个其他元素进行比较,如果有任何名称匹配,则对值进行求和,一旦到达列表末尾,则该新元素将添加到新列表中。如果没有元素匹配(该元素是唯一的),则添加该元素及其值。完成后,我将使用某种比较器对列表进行排序。
在 Scala 中是否有更实用的方法来实现这一点,可以使用过滤器方法?
最佳答案
假设您已经用如下方式解析了 CSV:
val data = List((10, "test1"), (11, "test1"), ...)
您现在可以执行以下操作:
data.groupBy(_._2).map {
case (label, vals) => (vals.map(_._1).sum, label)
}.toList.sortBy(_._2)
这一切都完成了。
关于java - 如何在 Scala 中对 csv 值列表中的值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17116921/