java - 如何在 Scala 中对 csv 值列表中的值求和?

标签 java scala

我有一个名称逗号分隔的名称值对列表,其中一些是重复的:

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/

相关文章:

scala - 为什么我应该使用 context.become() 来存储 Actor 的内部状态?

JApplet 中的 Java 键绑定(bind) : What am I doing wrong?

java - 图形对象被抑制

scala - Scala 中的 Wiremock 2.x

java - 将 Scala 缓冲区转换为 Java ArrayList

scala - 构造函数的按名称参数

Scala self 类型特征实例化

java - 读取线程中的解析消息

java - 如何手动将 Spring MVC View 呈现为 html?

java - 将泛型类型类传递给方法