Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala元组序列比较_Scala - Fatal编程技术网

Scala元组序列比较

Scala元组序列比较,scala,Scala,我有两个元组序列,其中包含一个类型和一个整数作为第一个和第二个值。第二个元组是groupedBy元组,因为只有一个类型和一个值。第一个元组可能包含具有相同类型和不同值的多个元素。我需要做的是根据类型对第一个元组进行分组,并添加属于相同类型的值的结果,然后将其与第二个元组序列进行聚合。如果第一个序列包含第二个序列中未包含的新元素,则需要将其添加到第二个序列中 val t1 = Seq[(TypeA, 1), (TypeB, 2), (TypeA, 3), (TypeC, 5)] val t2 =

我有两个元组序列,其中包含一个类型和一个整数作为第一个和第二个值。第二个元组是groupedBy元组,因为只有一个类型和一个值。第一个元组可能包含具有相同类型和不同值的多个元素。我需要做的是根据类型对第一个元组进行分组,并添加属于相同类型的值的结果,然后将其与第二个元组序列进行聚合。如果第一个序列包含第二个序列中未包含的新元素,则需要将其添加到第二个序列中

val t1 = Seq[(TypeA, 1), (TypeB, 2), (TypeA, 3), (TypeC, 5)]
val t2 = Seq[(TypeA, 2), (TypeB, 4)]
从上面的示例中,需要首先为类型填充t1,然后添加值,这将为我提供:

val groupedT1 = Seq[(TypeA, 4), (TypeB, 2), (TypeC, 5)]
现在groupedT1需要以相同的方式添加到t2。我使用groupBy函数作为起点,并将其应用于t1,这给了我:

t1.groupBy(_._1) // Gave me a Map(TypeA -> ArraySeq((TypeA, 1), (TypeA, 3)), TypeB.... and so on)
为了得到我的结果,我知道我必须对元组执行mapValues和foldLeft操作,这样我才能得到聚合的结果,但我只是无法获得正确的语法。有什么帮助或更好的主意吗?

给你:

val result = t1.groupBy(_._1).mapValues(_.foldLeft(0)((sum, current) => sum + current._2))

我或多或少得出了相同的解决方案,但添加了参数,没有使用下划线。谢谢你的回复!这实际上部分地回答了我原来的帖子。现在到第二部分,我需要将这个序列添加到t1。让我弄明白,我会发布我的尝试!