Arrays Scala中数组的多维数组
我读过关于使用ofdim在scala中生成多维数组的文章,但是如果我不希望所有数组的大小都相同呢?。 我希望能够制作一个数组,数组大小不一,如下所示,但还没有找到任何东西Arrays Scala中数组的多维数组,arrays,scala,Arrays,Scala,我读过关于使用ofdim在scala中生成多维数组的文章,但是如果我不希望所有数组的大小都相同呢?。 我希望能够制作一个数组,数组大小不一,如下所示,但还没有找到任何东西 dist = [[1,2,3], [10, 11, 13, 15, 16, 17, 19], [25]] 您可以始终使用制表,然后根据索引构建所需的大小,或从大小列表映射到阵列本身: Array.tabulate(4)(i => Array.range(0,i)) // Array[Ar
dist = [[1,2,3],
[10, 11, 13, 15, 16, 17, 19],
[25]]
您可以始终使用
制表
,然后根据索引构建所需的大小,或从大小列表映射到阵列本身:
Array.tabulate(4)(i => Array.range(0,i))
// Array[Array[Int]] = Array(Array(), Array(0), Array(0, 1), Array(0, 1, 2))
Array(3,7,1).map(i => Array.range(0,i))
// Array[Array[Int]] = Array(Array(0, 1, 2), Array(0, 1, 2, 3, 4, 5, 6), Array(0))
JVM没有真正的多维数组,只有数组的数组——所以Scala也没有。您可以随意构建它们。最好使用类似此数组的列表数组[List[Int]]。内部列表可以是可变长度的,以满足您的需要。或者列表列表,如果您不确定前面的外部数组长度>P>如果考虑来自构建直方图的集合中的装箱值,考虑重复使用<代码>分区< /代码>(请参阅我的完整、相关、答案),像这样,
def histo(bounds: Array[Int], data: Array[Int]): Array[Array[Int]] = {
bounds match {
case Array(h) => Array(data)
case Array(h, t @ _*) => val (l,r) = data.partition( _ < h)
l +: histo(t.toArray,r)
}
}
我们有
histo(bounds, dist)
res: Array[Array[Int]] = Array(Array(1, 2, 3),
Array(10, 11, 13, 15, 16, 17, 19),
Array(25))
一组不同长度或尺寸的数组?一组不同长度的数组,用于将物品放入箱子的东西;比如做一个直方图。为什么当我做var hist=Array.tablate(9)(i=>Array(0))并尝试打印hist时,我会得到如下结果[[I@5b895cb9@vyruz-
Array
没有打印其内容的toString
方法。REPL将调用自己的打印例程,而不仅仅是调用toString
;您可以println(hist.map(u.mkString(“,”).mkString(“\n”)
或类似的方法查看元素。
histo(bounds, dist)
res: Array[Array[Int]] = Array(Array(1, 2, 3),
Array(10, 11, 13, 15, 16, 17, 19),
Array(25))