Scala中包含任何类型的数组到Array类型

时间:2017-10-15 14:51:50

标签: arrays scala apache-spark

我有一个类型为Any的WrappedArray值。如何转换为数组。

对于Ex:

val flds = valArr(0)(2)
flds: Any = WrappedArray(F1,F2,F3,F4,F5)

我尝试将flds转换为String Array ..

val flds = valArr(0)(2).toArray

但是我得到了以下错误

<console>:41: error: value toArray is not a member of Any

我如何转换..?我只想循环通过wrappedArray,但我不知道该怎么做..这就是为什么我试图将它转换为Array并循环通过它。

3 个答案:

答案 0 :(得分:3)

这是从WrappedArray获取Array的方式,反之亦然:

val warr: WrappedArray[Int] = WrappedArray.make(Array(1, 2, 3))
val arr: Array[Int] = warr.array

val warr: WrappedArray[Int] = Array(1, 2, 3) // implicit conversion
val arr: Array[Int] = warr.array

答案 1 :(得分:0)

WrappedArray [Any]

开始
val warr: WrappedArray[Any] = WrappedArray.make(Array(1, 2, 3))

我可以通过这种方式进入 Array [Int]

val arr: Array[Int] = warr.toArray.map(_.asInstanceOf[Int])

答案 2 :(得分:0)

首先你需要告诉 Scala 你的 WrappedArray 是一个 WrappedArray,所以

import scala.collection.mutable.WrappedArray
val warr = flds.asInstanceOf[WrappedArray[T]]

其中 T 是数组内容的类型。之后,您将拥有 WrappedArray 的所有方法,例如warr.toArray