2011-05-17 53 views
4

我该怎么做阶相当于这个Java代码如何在scala中创建不同长度的2d int数组?

int[][] vals = new int[4][]; 
for (int i=0; i < vals.length; i++) { 
    vals[i] = new int[1 + 2*i]; 
} 

的Array.ofDim方法有两个参数

做到这一点
+0

这被称为“衣衫褴褛的阵列”。你真的想要一个数组,还是列表足够? – 2011-05-17 23:20:36

+0

我需要一个实际的速度和内存利用率阵列 – Anne 2011-05-17 23:41:47

回答

3

就像这样:

Array.tabulate(4)(i => Array.ofDim[Int](1 + 2 * i)) 

然而,它会慢很多。如果此代码处于关键路径中,则应该执行一个while循环以使其与Java中的相似。

3

一种方法是:

Array.tabulate(4)(i => new Array[Int](1 + 2 * i)) 
+0

Err ...差不多。 :-) – 2011-05-18 01:28:15

+0

@Daniel为什么差不多?它产生的结果与你答案中的代码完全一样... – Moritz 2011-05-18 01:36:31

+1

对不起,我没有看到“'new'”关键字,所以它看起来像它会创建一个1 + 2 *我'作为内容。对不起,你的确是一样的。 – 2011-05-18 15:29:40

相关问题