scala收集了一对组合列表

时间:2014-06-20 17:19:31

标签: scala functional-programming

给出以下内容:

Map( X -> List( (Option[Ob1], Option[ObjA]), (Option[Obj1], Option[ObjB]), (Option[Obj2], Option[ObjA]), (Option[Obj2], Option[ObjB]), (..., ...) ))

我需要收集并将组合分组为一对2个列表(同时保持地图和关键部分现在相同):

Map (X -> ( List(Obj1, Obj2, Obj3 ...), List(ObjA, ObjB ...) )

换句话说,我需要执行相反的操作来创建2个列表的所有组合,我需要"原始" 2列表包含每个唯一元素。我尝试了解压缩和映射的各种组合但没有成功。

1 个答案:

答案 0 :(得分:2)

听起来你正在寻找Map这样的事情:

.mapValues(_.unzip).mapValues{ case (a, b) => (a.distinct, b.distinct) }

如果您需要排序,可以将其与distinct方法进行链接。