2013-07-06 42 views
4

比方說,我有一個int[][] anArray = new int[4][4];如何在java中的數組中使用數組?

而且讓我們說,我想要做一個數組的第3行{1,2,3,4}。我可以做到這一點,而無需手動分配每個單獨的價值?如果是陣列的第2列怎麼辦?

我張貼這一點,因爲它是相當不方便做的東西是這樣的:

int[][] foo = new int[bar][baz]; 
// 
//Code that uses other columns of foo 
// 
for (int n=0; n < bar; n++) 
    foo[n][1] = bin[n]; 
+3

建議:'foo [2] = new int [] {1,2,3,4};'。 – keyser

+0

我會提出一個建議,因爲我不會回答你的問題,真的。答案是,「不要」。相反,使用集合類,如ArrayList或HashMap。 –

回答

4

如果我正確理解你的問題,這裏是代碼爲{1,2,3,4}分配的anArray行索引3離不開循環:

int[][] anArray = new int[4][4]; 
anArray[3] = new int[] {1,2,3,4}; 
System.out.println(Arrays.deepToString(anArray)); 

輸出:

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [1, 2, 3, 4]] 
+0

@Keyser不客氣。從0開始,總會有一些關於索引的語義混淆的可能性,當然,如果您暗示「第3行」可能是「anArray [2]」 - 我只是選擇了「anArray [3]」,原因超出了我自己的理解: ) – Mena

0

如果你想一個二維數組的整行分配給另一個(一維)陣列,你可以簡單地做

int[][] foo = new int [3][3]; 
int[] bin={1,2,3}; 
foo[1] = bin; 

如果要列,雖然分配,恐怕你只能做手工......

0
anArray[3] = new int [] {1, 2, 3, 4} 
0

它基本上是一個陣列陣列的因此我們可以一次添加完整陣列:

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

您可以使用hel每種方法設置一列:

public class MatrixTest { 

    public static void main(String... args) { 
    Integer[][] target = new Integer[3][2]; 
    setMatrixColumn(target, 1, new Integer[]{ 1, 1, 1 }); 

    System.out.println(Arrays.deepToString(target)); 
    } 

    public static <T> void setMatrixColumn(T[][] matrix, int index, T[] values) { 
    for (int i = 0; i < values.length; i++) 
     matrix[i][index] = values[index]; 
    } 
}