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

lse*_*ohn 1 scala

我有以下数组:

val input = Array(Array(), Array(22,33), Array(), Array(77), Array(88,99))
Run Code Online (Sandbox Code Playgroud)

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

Array(22,33,77,88,99)
Run Code Online (Sandbox Code Playgroud)

我尝试了该flatten功能,但似乎不适用于的类型Array[_ <: Int]

Jor*_*ler 6

另一种书写方式:

input.flatMap(_.toList)
Run Code Online (Sandbox Code Playgroud)

空数组将转换为Nils,因为它是一个flatMap,所以Nils会被展平


Eug*_*uge 5

Monad是您的朋友:

for { a <- input; b <- a.toList } yield b
Run Code Online (Sandbox Code Playgroud)

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

val input: Array[Array[Int]] = Array(Array(), Array(22,33), Array(), Array(77), Array(88,99))
input.flatten
Run Code Online (Sandbox Code Playgroud)

  • 甚至更简洁的input.flatMap(_。toList) (2认同)