在Java中的最终2D数组中附加2D数组

时间:2017-10-03 05:44:32

标签: java arrays data-structures

我在最终2D arrays中附加2D array列表时遇到问题。

问题陈述:

如果我有2 2D arrays

array1 = {{0,0},
          {0,1}};

array2 = {{0,1},
          {0,2}};

我想要这种形式的最终2D数组:

final_array = {{0,0,0,1},
               {0,1,0,2}};

并且它不应该取决于尺寸。它也适用于不同的尺寸。像:

array1={{0,0},
        {0,0}};

array2={{0,1},
        {0,2}};

array3={{1,0},
       {1,1}};

array4={{0,3},
       {1,4}};

final_array = {{0,0,0,1,1,0,0,3},
               {0,0,0,2,1,1,1,4}};

我尝试了以下方法来实现,但我没有得到预期的结果:

import java.util.*;
class Main {
  public static void main(String[] args) {
    int[][] a = {{0,0},
                      {0,0}};
    int[][] b = {{0,1},
                      {0,1}};
    String array1_str = Arrays.deepToString(a);
    String array2_str = Arrays.deepToString(b);
    System.out.println(Arrays.deepToString(append(a, b)));

  }

  public static int[][] append(int[][] a, int[][] b) {
        int[][] result = new int[a.length + b.length][];
        System.arraycopy(a, 0, result, 0, a.length);
        System.arraycopy(b, 0, result, a.length, b.length);
        return result;
    }
}

我怎样才能实现这种追加?

1 个答案:

答案 0 :(得分:0)

您可以在java.util中使用2D ArrayList和List。你可以循环遍历2d数组,填充列表将它附加到数组列表,并为第二行等做。

您可以尝试:

List<List<Integer>> finalArray = new ArrayList<List<Integer>>();

// loop through the first row of arrays and fill the list
// long form of loop statement 
List<Integer> row = new ArrayList<Integer>();
row.add(array1_str[0][0]); 
row.add(array1_str[0][1]);
row.add(array2_str[0][0]); 
row.add(array2_str[0][1]); // ...
finalArray.add(row);

System.out.println(Arrays.deepToString(finalArray.toArray()));
相关问题