如何在Scala中展平数组数组?

时间:2018-02-16 19:38:06

标签: scala

我有以下数组:

val input = Array(Array(), Array(22,33), Array(), Array(77), Array(88,99))

它包含空数组。我想获得一个没有任何空数组的扁平数组,因此输出应为:

Array(22,33,77,88,99)

我尝试了flatten功能,但似乎无法使用Array[_ <: Int]的类型。

3 个答案:

答案 0 :(得分:4)

它推断Array[_ <: Int]因为某些数组是空的。试试这个:

val input = Array(Array[Int](), Array(22,33), Array[Int](), Array(77), Array(88,99)).flatten

确保结果类型为Array[Array[Int]],这应该是可以展平的。

答案 1 :(得分:4)

Monads是你的朋友:

for { a <- input; b <- a.toList } yield b

编辑: 如果您指定了类型,flatten可以正常工作

val input: Array[Array[Int]] = Array(Array(), Array(22,33), Array(), Array(77), Array(88,99))
input.flatten

答案 2 :(得分:3)

另一种写作方式:

input.flatMap(_.toList)

空数组转换为Nils,因为它是一个平面地图,Nils变平了