如何将任意深度的嵌套数组展开?
例如:
会被压缩到同一层级上。
感谢您提前的支持。
例如:
val in = Array( 1, Array(2,3), 4, Array(Array(5)) )
会被压缩到同一层级上。
val out = Array(1,2,3,4,5)
感谢您提前的支持。
val in = Array( 1, Array(2,3), 4, Array(Array(5)) )
val out = Array(1,2,3,4,5)
Int
和 Array[Int]
,这本身就不是一个很好的想法,但您可以尝试以下操作:in.flatMap{ case i: Int => Array(i); case ai: Array[Int] => ai }
(如果您在数组中放置了其他内容),它将抛出异常。因此,您可以将其用作递归函数的基础:
def flatInt(in: Array[Any]): Array[Int] = in.flatMap{
case i: Int => Array(i)
case ai: Array[Int] => ai
case x: Array[_] => flatInt(x.toArray[Any])
}
Int
替换为Any
并得到一个扁平的Array[Any]
作为结果。(编辑:此时Any
的情况需要放在最后。)case ai: Array[Int] =>
做出正确(错误)的处理。 - Travis Brown
in
可能只有类型为Array[Any]
,这意味着你必须进行某种形式的下转换。 - Travis BrownInt
和Array[Int]
是不同的类型,它们唯一共同拥有的类型是Any
。 - Travis Brown