1

私が持っている場合:

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];
}

しかし、それは1つのステートメントで行うことができますか?

たとえば、私が持っている場合:

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

私は簡単にできます:

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

だから私は似たようなもの(2つの配列に分割する)を探していますarray int[1000][2];

4

1 に答える 1

1

しかし、それは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]、すでに示したように、2つのint[1000]配列を簡単に取り出すことができます。

于 2012-11-28T07:26:21.797 に答える