2011-03-23 39 views
1

Java中是否有預定義的函數來將數組中的所有整數設置爲指定值?如何在Java中初始化數組中的所有整數?

假設給出了以下數組:byte start[][][] = new byte[MAXSUM][rows][N * 2];有沒有比3 loops更好的方式將它初始化爲一些常量,而不是0

可以使用Arrays.fill()初始化一個數組的值超過1的值嗎?

回答

6

不,沒有內置的,但它不應該看起來很醜陋與嵌套for循環。

public static void multiDimensionalFill(byte[][][] start, byte value) { 
    for(byte[][] firstdim : start) 
     for(byte[] seconddim : firstdim) 
      Arrays.fill(seconddim, value); 
} 
+0

相比於C/C++'memset的(開始,-1,的sizeof(開始))'一個班輪它看起來笨重... – Leonid 2011-03-23 01:33:55

+1

@Leonid不幸的是,Java不是C或C++,而且您無權訪問數組引用的低級內存。但是,您可以在項目中簡單地創建一些靜態實用程序方法,然後在需要初始化某些內容時調用「multiDimensionalFill」方法 - 解決問題。 – 2011-03-23 01:36:49

+0

好吧,沒有人會阻止你使用一維數組,只需調用Arrays.fill並進行每次訪問從1維到n維的轉換。這是交換一個較小的不便之處,但會「工作」;) – Voo 2011-03-23 01:39:42

1

沒有更好的內置方式來初始化多維數組,而不是遍歷值。

0

Arrays.fill()僅適用於一個維數組