Scala 具有内部元组的元组向量中的唯一元素

Scala 具有内部元组的元组向量中的唯一元素,scala,distinct,Scala,Distinct,我有一个包含元组的向量,如: Vector( (a1,(a2,(a3,a4))),(b1,(b2,(b3,b4))),(c1,(c2,(c3,c4))),...............) 这个向量很长,我得到了a1,b1,c1…等的重复(相等)值,也得到了a2,b2,c2…等的重复(相等)值,同样得到了a3,b3,c3…等的重复(相等)值。 我的要求是: 我想要三个具有唯一元素的向量:a1、b1、c1……等,a2、b2、c2……等,以及a3、b3、c3……等(即,基于该特定元素的第一次出现而不

我有一个包含元组的向量,如:

Vector( (a1,(a2,(a3,a4))),(b1,(b2,(b3,b4))),(c1,(c2,(c3,c4))),...............)
这个向量很长,我得到了a1,b1,c1…等的重复(相等)值,也得到了a2,b2,c2…等的重复(相等)值,同样得到了a3,b3,c3…等的重复(相等)值。 我的要求是:

我想要三个具有唯一元素的向量:a1、b1、c1……等,a2、b2、c2……等,以及a3、b3、c3……等(即,基于该特定元素的第一次出现而不同)

有没有一种方法可以在Scala中使用简洁的代码实现这一点 所有这些值都是整数还是双精度

例如:

给定向量:

Vector( (2,(8,(4,5))),(6,(3,(7,9))),(2,(3,(7,9))),(2,(8,(4,5))))
答复:

Vector1 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) ) 
Vector2 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) )
Vector3 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) ) 

即,根据该特定元素的第一次出现而不同。

您可以使用
groupBy
,然后从每个组中获得第一个结果:

 val vec = Vector((2, (8, (4, 5))),
                  (6, (3, (7, 9))),
                  (2, (3, (7, 9))),
                  (2, (8, (4, 5))))
 val vector1 = vec.groupBy(_._1).values.map(_.head)
 val vector2 = vec.groupBy(_._2._1).values.map(_.head)
 val vector3 = vec.groupBy(_._2._2._1).values.map(_.head)

这将根据请求按第一个元素断开连接。但是,请注意,对于vector1、vector2、,和vector3。

希望上面的例子可以解释要求是什么。当存在重复时,如何选择一个元组而不是另一个元组?结果的顺序是否有意义?或者只要它包含所有正确的元素就足够了?我在一些计算中得到了这种元组向量。这是有意义的。我需要检查基于独特元素的三种结果。你的三个答案都是一样的。