2011-12-19 67 views
5

假设我有一个返回这个的方法。将元组转换为第一项的列表

Vector[ (PkgLine, Tree) ]() 

我想将其转换为PkgLines列表。我想放弃树。我没有看到scala库中的任何东西可以让我这样做。任何人有任何简单的想法?谢谢。

回答

16
val list = vector.map(_._1).toList 

如果你有一个三元组t,您可以使用t._1访问它的第一个元素。因此,使用map操作时,您正在有效地丢弃树并直接存储PkgLines。然后,您只需将Vector转换为List即可。

+4

'breakOut'是跳过中介'矢量的好方法':'vector.map(_._ 1)(collection.breakOut):List [PkgLine]' – 4e6 2011-12-19 17:07:17

4

使用map与一对的第一个元素的选择作品:

scala> val v = Vector[(Int,String)]((5,"5"), (42,"forty-two")) 
v: ... = Vector((5,5), (42,forty-two)) 

scala> v.map(_._1).toList 
resN: List[Int] = List(5, 42) 

或者,你可以使用unzip

scala> val (ints,strings) = v.unzip 
ints: scala.collection.immutable.Vector[Int] = Vector(5, 42) 
strings: scala.collection.immutable.Vector[String] = Vector(5, forty-two) 

scala> ints.toList 
resN: List[Int] = List(5, 42)