有没有办法在Scala中构建动态多维数组?我知道Scala中的数组必须按其大小和尺寸进行初始化,所以我不希望这样.数据结构应该是动态的.我尝试使用列表中的列表来构建它,但我在某种程度上迷失了自己.
有很多不同的类型,也许我找不到合适的类型.所以请把我推向正确的方向.
如果你想做点什么
a(5)= //一些计算的结果
那么你需要使用可变集合层次结构中的东西.我建议ArrayBuffer.
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> val a = ArrayBuffer.fill(3,3)(0)
a: scala.collection.mutable.ArrayBuffer[scala.collection.mutable.ArrayBuffer[Int]] = ArrayBuffer(ArrayBuffer(0, 0, 0), ArrayBuffer(0, 0, 0), ArrayBuffer(0, 0, 0))
scala> a(2)(1) = 4
scala> a(0) = ArrayBuffer(1,2,3)
scala> a
res2: scala.collection.mutable.ArrayBuffer[scala.collection.mutable.ArrayBuffer[Int]] = ArrayBuffer(ArrayBuffer(1, 2, 3), ArrayBuffer(0, 0, 0), ArrayBuffer(0, 4, 0))
Run Code Online (Sandbox Code Playgroud)
请注意,fill您可以自动创建和初始化最多5D结构.另请注意,您可以扩展这些的长度,但它不会扩展整个多维结构,只会扩展您添加的结构.所以,例如,
scala> a(2) += 7 // Add one element to the end of the array
res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 4, 0, 7)
scala> a
res4: scala.collection.mutable.ArrayBuffer[scala.collection.mutable.ArrayBuffer[Int]]
= ArrayBuffer(ArrayBuffer(1, 2, 3), ArrayBuffer(0, 0, 0), ArrayBuffer(0, 4, 0, 7))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4927 次 |
| 最近记录: |