我有一个名称逗号分隔名称值对的列表,其中一些重复:
10, test1
11, test2
12, test3
13, test1
14, test2
我想总结重复的值(按降序排列),上面的列表变为:
25, test2
23, test1
12, test3
在java中,我将创建一个新列表并迭代现有列表。列表中的每个元素将与每个其他元素进行比较,如果任何名称匹配,则将值相加,一旦到达列表的末尾,则将此新元素添加到新列表中。如果没有元素匹配(元素是唯一的),则添加此元素及其值。完成后,我会使用某种比较器对List进行排序。
在Scala中是否有更实用的方法可以使用过滤方法?
答案 0 :(得分:4)
假设您已经使用以下内容解析了CSV:
val data = List((10, "test1"), (11, "test1"), ...)
您现在可以:
data.groupBy(_._2).map {
case (label, vals) => (vals.map(_._1).sum, label)
}.toList.sortBy(_._2)
这就是一切。
答案 1 :(得分:1)