scala的多维数组

发布于:2024-12-18 ⋅ 阅读:(86) ⋅ 点赞:(0)

创建多维数组

创建多维数组可以使用Array.ofDim方法,该方法接受一个或多个整数参数,分别代表每个维度的大小。

// 创建一个3x3的二维数组,类型为Int
val matrix = Array.ofDim[Int](3, 3)

// 创建一个3x3x3的三维数组,类型为Double
val cube = Array.ofDim[Double](3, 3, 3)

初始化多维数组

除了使用ofDim方法创建未初始化的多维数组外,还可以使用Array.fill方法来创建并初始化所有元素为特定值的多维数组。

// 创建一个3x3的二维数组,所有元素初始化为0
val matrixFilled = Array.fill(3, 3)(0)

// 创建一个3x3x3的三维数组,所有元素初始化为0.0
val cubeFilled = Array.fill(3, 3, 3)(0.0)

访问多维数组元素

访问多维数组中的元素需要使用多个索引,每个索引对应一个维度。

// 访问二维数组的第一个元素(位于第一行第一列)
println(matrix(0)(0))

// 访问三维数组的第一个元素(位于第一个3x3矩阵的第一行第一列)
println(cube(0)(0)(0))

修改多维数组元素

修改多维数组中的元素与访问类似,使用多个索引。

// 修改二维数组的第一个元素为1
matrix(0)(0) = 1

// 修改三维数组的第一个元素为1.0
cube(0)(0)(0) = 1.0

遍历多维数组

可以使用嵌套的foreach循环来遍历多维数组。

// 遍历二维数组
matrix.foreach(row => row.foreach(println))

// 遍历三维数组
cube.foreach(layer => layer.foreach(row => row.foreach(println)))

多维数组的其他操作

多维数组支持数组复制、转换为其他集合类型等操作。

// 复制二维数组
val copyOfMatrix = matrix.clone()

// 将二维数组转换为列表的列表
val matrixAsList = matrix.map(_.toList)

注意事项

  • Scala的多维数组实际上是数组的数组,这意味着它们在内存中并不是连续存储的,这可能会影响性能。
  • 多维数组的大小在创建时确定,之后不能改变。
  • Scala标准库中的集合操作(如mapfilter等)通常不适用于多维数组,因为它们是为单维数组设计的。