2011-09-26 98 views
10

是否有简明的方法将Scala中的Seq转换为ArrayBuffer将Seq转换为ArrayBuffer

+0

重复:http://stackoverflow.com/questions/3074118/scala-how-do-i-convert-a-mapint-any-to-a-sortedmap-or-a-treemap – sschaef

回答

12

这将工作:

ArrayBuffer(mySeq : _*) 

几点说明:它使用的ArrayBuffer companion object的应用方法。该方法的签名是

def apply [A] (elems: A*): ArrayBuffer[A] 

这意味着它需要可变数量的参数。例如:

ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8) 

也是有效的调用。归属:_​​ *指示编译器应该使用Seq来代替可变数量的参数(请参见Scala Reference中的第4.6.2节)。

+0

感谢Philippe,这对我很好。 – classicalist

22
scala> val seq = 1::2::3::Nil 
seq: List[Int] = List(1, 2, 3) 

scala> seq.toBuffer 
res2: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3) 

EDIT Scala的2.1倍之后,有在TraversableLike定义的方法.to[Coll],其可用于如下:

scala> import collection.mutable 
import collection.mutable 

scala> seq.to[mutable.ArrayBuffer] 
res1: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3) 

scala> seq.to[mutable.Set] 
res2: scala.collection.mutable.Set[Int] = Set(1, 2, 3) 
+0

+1'seq.toBuffer'必须是最清晰和最难忘的方式 – karmakaze

相关问题