Arrays 在Scala中创建零数组的更快方法

Arrays 在Scala中创建零数组的更快方法,arrays,scala,Arrays,Scala,我使用 (0到Nrows).map(=>0).toArray但是有更快的吗地图速度慢 我有同样的问题,但是用1代替O,也就是说,我也想加速(0到Nrows)。map(=>1)。toArray零是整数数组的默认值,所以只需执行以下操作: val array = new Array[Int](NRows) 如果希望所有这些值都是1s,则使用.fill()(感谢@gourlaysama): 然而,从内部来看,这是如何工作的,它涉及到创建一些您不需要的对象。如果您主要关注速度,我怀疑以下(更丑

我使用
(0到Nrows).map(=>0).toArray
但是有更快的吗<代码>地图速度慢


我有同样的问题,但是用1代替O,也就是说,我也想加速
(0到Nrows)。map(=>1)。toArray
零是整数数组的默认值,所以只需执行以下操作:

    val array = new Array[Int](NRows)
如果希望所有这些值都是1s,则使用.fill()(感谢@gourlaysama):

然而,从内部来看,这是如何工作的,它涉及到创建一些您不需要的对象。如果您主要关注速度,我怀疑以下(更丑陋的)方法可能会更快:

    val array = new Array[Int](NRows)
    for (i <- 0 until array.length) { array(i) = 1 }
val数组=新数组[Int](NRows)

对于(多维数组的i考虑<代码>数组),OfDime,例如

scala> val a = Array.ofDim[Int](3,3)
a: Array[Array[Int]] = Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0))
scala> Array.tabulate(3,3)( (x,y) => 1)
res5: Array[Array[Int]] = Array(Array(1, 1, 1), Array(1, 1, 1), Array(1, 1, 1))

scala> Array.tabulate(3)( x => 1)
res18: Array[Int] = Array(1, 1, 1)
同样地

scala> val a = Array.ofDim[Int](3)
a: Array[Int] = Array(0, 0, 0)
在这里的上下文中

val a = Array.ofDim[Int](NRows)

用于设置(可能为非零)初始值,考虑<代码>数组。列表< < /代码>,例如,

scala> val a = Array.ofDim[Int](3,3)
a: Array[Array[Int]] = Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0))
scala> Array.tabulate(3,3)( (x,y) => 1)
res5: Array[Array[Int]] = Array(Array(1, 1, 1), Array(1, 1, 1), Array(1, 1, 1))

scala> Array.tabulate(3)( x => 1)
res18: Array[Int] = Array(1, 1, 1)

要使用值初始化数组,您可以使用
array.fill
方法:
val array=array.fill(NRows)(1)
,而不是手动迭代。您可以使用或,但这取决于您要对该数组执行的操作。