创建多维数组
创建多维数组可以使用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标准库中的集合操作(如
map
、filter
等)通常不适用于多维数组,因为它们是为单维数组设计的。