Java 如何对Scala中csv值列表中的值求和?
我有一个名称逗号分隔的名称-值对列表,其中有些重复:Java 如何对Scala中csv值列表中的值求和?,java,scala,Java,Scala,我有一个名称逗号分隔的名称-值对列表,其中有些重复: 10, test1 11, test2 12, test3 13, test1 14, test2 我想将重复的值(按降序)相加,使上述列表变为: 25, test2 23, test1 12, test3 在java中,我将创建一个新的列表并遍历现有列表。列表中的每个元素都将与其他元素进行比较,如果任何名称匹配,则将对值进行求和,一旦到达列表的末尾,则将此新元素添加到新列表中。如果没有匹配的元素(该元素是唯一的),则该元素将与其值一起添
10, test1
11, test2
12, test3
13, test1
14, test2
我想将重复的值(按降序)相加,使上述列表变为:
25, test2
23, test1
12, test3
在java中,我将创建一个新的列表并遍历现有列表。列表中的每个元素都将与其他元素进行比较,如果任何名称匹配,则将对值进行求和,一旦到达列表的末尾,则将此新元素添加到新列表中。如果没有匹配的元素(该元素是唯一的),则该元素将与其值一起添加。一旦完成,我将使用某种比较器对列表进行排序
在Scala中是否有更实用的方法来实现这一点,可以使用filter方法?您可以首先使用a将值收集到地图中,然后使用计算您需要的答案,在本例中,这只是求和
还要注意,这里团队名称是关键,总和是值,但这并不重要(?)您可以首先使用a将值收集到地图中,然后使用计算您需要的答案,在本例中,这只是总和
还请注意,这里团队名称是关键,总和是值,但这并不重要(?)。假设您已经用如下方式解析了CSV:
val data = List((10, "test1"), (11, "test1"), ...)
您现在可以执行以下操作:
data.groupBy(_._2).map {
case (label, vals) => (vals.map(_._1).sum, label)
}.toList.sortBy(_._2)
这就完成了。假设您已将CSV解析为以下内容:
val data = List((10, "test1"), (11, "test1"), ...)
您现在可以执行以下操作:
data.groupBy(_._2).map {
case (label, vals) => (vals.map(_._1).sum, label)
}.toList.sortBy(_._2)
这就是全部