有什么简洁的方法可以在 Scala 中将aSeq
转换为?ArrayBuffer
问问题
17675 次
2 回答
28
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)
编辑在 Scala 2.1x 之后,在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)
于 2011-09-26T10:42:17.083 回答
12
这将起作用:
ArrayBuffer(mySeq : _*)
一些解释:这使用了ArrayBuffer 伴随对象中的 apply 方法。该方法的签名是
def apply [A] (elems: A*): ArrayBuffer[A]
这意味着它需要可变数量的参数。例如:
ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8)
也是一个有效的调用。归属 : _* 向编译器表明应该使用 Seq 代替可变数量的参数(请参阅Scala 参考中的第 4.6.2 节)。
于 2011-09-26T09:52:49.753 回答