将元组转换为第一个项目的列表

时间:2011-12-19 14:43:13

标签: scala

假设我有一个返回此方法。

Vector[ (PkgLine, Tree) ]()

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

2 个答案:

答案 0 :(得分:16)

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

如果您有一个Tupel t,则可以使用t._1访问其第一个元素。因此,使用map操作,您可以有效地丢弃树,并直接存储PkgLines。然后,您只需将Vector转换为List

答案 1 :(得分: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)