如何通过一个语句将2d数组划分为1d数组?

时间:2012-11-28 07:18:47

标签: java arrays

如果我有:

int[] a = {1,2,3,4,5};
int[] b = {5,7,8,9};
int[][] array2d ={a,b};

我可以将array2d分成2个1d数组:

int[] A = new int[array2d[0].length];
int[] B = new int[array2d[1].length];
for(int i = 0; i < array2d.lenght; i++){
   A[i] = array2d[i][0];
   B[i] = array2d[i][1];
}

但可以通过一个声明来完成吗?

例如,如果我有:

int[][] array2dx = new int[2][1000];

我可以轻松实现:

int[] Ax = array2dx[0];
int[] Bx = array2dy[1];

所以我为array int[1000][2];

寻找类似的东西(分为2个数组)

1 个答案:

答案 0 :(得分:1)

  

但可以通过一个声明来完成吗?

没有我所知道的任何内置方法。听起来你基本上想要编写一个转置方法:

 static int[][] transpose(int[][] input) {
     // TODO: Validation. Detect empty and non-rectangular arrays.
     int[][] ret = new int[input[0].length][];
     for (int i = 0; i < ret.length; i++) {
        ret[i] = new int[input.length];
     }
     for (int i = 0; i < input.length; i++) {
         for (int j = 0; i < ret.length; j++) {
             ret[j][i] = input[i][j];
         }
     }
     return ret;
 }

一旦您将int[1000][2]转换为int[2][1000],您就可以简单地将两个int[1000]阵列转出,就像您已经展示过一样。