【发布时间】:2014-03-18 01:58:53
【问题描述】:
我有两个包含类型和整数作为第一个和第二个值的元组序列。第二个元组是 groupedBy 元组,因为只有一种类型和一个值。第一个元组可能包含多个具有相同类型和不同值的元素。我需要做的是根据类型对第一个元组进行分组,并添加属于同一类型的值的结果,然后将其与第二个元组序列聚合。如果第一个序列包含第二个序列中没有的新元素,则需要将其添加到第二个序列中。
val t1 = Seq[(TypeA, 1), (TypeB, 2), (TypeA, 3), (TypeC, 5)]
val t2 = Seq[(TypeA, 2), (TypeB, 4)]
从上面的例子中,t1 需要首先为 Type 加上值,然后给我:
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 操作,以便我可以取回聚合结果,但是我无法正确获取语法。有什么帮助或更好的主意吗?
【问题讨论】:
标签: scala