2011-12-19 23 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)