4

假设我有一个int[][] anArray = new int[4][4];

假设我想制作 anArray {1, 2, 3, 4} 的第 3 行。我可以在不手动为每个单独的值分配其值的情况下做到这一点吗?如果它是 anArray 的第 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];
4

5 回答 5

4

如果我正确理解你的问题,这里是分配行索引 3 的代码,anArray没有{1,2,3,4}循环:

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]]
于 2013-07-06T21:59:56.813 回答
0

它基本上是一个数组数组,因此我们可以一次性添加完整数组:

int[][] array = new int[4][4];
for (int i = 0; i < array.length; i++) {
    array[i] = new int[] { 1, 2, 3, 4 };
}
于 2013-07-06T22:07:13.490 回答
0

如果要将二维数组的整行分配给另一个(一维)数组,您可以简单地执行

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

但是,如果要分配列,恐怕您只能手动进行...

于 2013-07-06T21:59:16.403 回答
0
anArray[3] = new int [] {1, 2, 3, 4}
于 2013-07-06T21:59:41.013 回答
0

您可以使用辅助方法来设置列:

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];
  }
}
于 2013-07-06T22:26:57.193 回答