2011-05-17 85 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

相關問題