开发者

Convert Seq to ArrayBuffer

Is there an开发者_StackOverflow中文版y concise way to convert a Seq into ArrayBuffer in Scala?


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 After Scala 2.1x, there is a method .to[Coll] defined in TraversableLike, which can be used as follow:

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)


This will work:

ArrayBuffer(mySeq : _*)

Some explanations: this uses the apply method in the ArrayBuffer companion object. The signature of that method is

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

meaning that it takes a variable number of arguments. For instance:

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

is also a valid call. The ascription : _* indicates to the compiler that a Seq should be used in place of that variable number of arguments (see Section 4.6.2 in the Scala Reference).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜