如何在java中合并2D数组?

如何在java中合并2D数组?,java,Java,所以我想在java中合并两个2D数组,例如: arr1 = {{id, first_name, last_name}, {1, denise, phillips}} arr2 = {{gender, ip_address}, {Female, 152.81.244.149}} 它将加入这些并成为: arr3 = {{id, first_name, last_name, gender, ip_address}, {1, denise, phillips,Female, 152.81.24

所以我想在java中合并两个2D数组,例如:

arr1 = {{id, first_name, last_name}, {1, denise, phillips}}  
arr2 = {{gender, ip_address}, {Female, 152.81.244.149}}  
它将加入这些并成为:

arr3 = {{id, first_name, last_name, gender, ip_address}, {1, denise, phillips,Female, 152.81.244.149}}

系统上循环。arraycopy
可以完成作业:

Object[][] arr1 = {{"id", "first_name", "last_name"}, {1, "denise", "phillips"}};
Object[][] arr2 = {{"gender", "ip_address"}, {"Female", "152.81.244.149"}};

Object[][] arr3 = new Object[2][];
for(int i = 0; i < arr3.length; i++) {
    arr3[i] = new Object[arr1[i].length + arr2[i].length];
    System.arraycopy(arr1[i], 0, arr3[i], 0);
    System.arraycopy(arr2[i], 0, arr3[i], arr1[i].length);
}
Object[]arr1={{“id”,“first_name”,“last_name”},{1,“denise”,“phillips”};
对象[][]arr2={{“性别”,“ip_地址”},{“女性”,“152.81.244.149”};
对象[][]arr3=新对象[2][];
对于(int i=0;i
这是一种骇人听闻的粗俗行为——如果您可以控制
arr1
arr2
的创建和维护方式,那么您应该在那里对它们进行更改,使其不必执行这样的操作,因为这是不可远程扩展的

更好的方法是创建一个表示记录的新类,而不是试图用数组来表示一个复杂的类。

arr1 = {{id, first_name, last_name}, {1, denise, phillips}}  
arr2 = {{gender, ip_address}, {Female, 152.81.244.149}} 

另一个二维数组来存储它们

在此处使用数据类型而不是“字符串”。我用“绳子”只是给你指路

现在在
arr3
中合并
arr1
arr2
,如您的示例所示:

for(int j=0;j<2;j++)
{
    for(int i=0;i<m+n;i++)
    {
        if(i<m)
            arr3[i]=arr1[i];
        else
            arr3[i]=arr2[i%m];
    }
}

for(int j=0;j因为我们知道每个数组中的行数相同,这意味着新数组将具有相同的行数

String[][] merged = new String[size][]; //where size is number of rows
现在我们可以专注于用适当的行填充这个数组

  • 迭代每对行
  • 数一数他们的专栏
  • 基于该计数创建新行数组,如
    String[]row=newstring[count];
  • 用两行中的数据填充此行
最后一点可以像这样实现

int counter = 0;
for (int i=0; i<rowA.length; i++)//rowA represents row from first array
    row[counter++]=rowA[i];
for (int i=0; i<rowB.length; i++)//rowB represents row from second array 
    row[counter++]=rowB[i];

我设法使它与此一起工作,可能不是最好的解决方案。我将尝试其他解决方案:

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < columnIndex - 1; j++) {
        tmpTable[i][j] = tmpLeft[i][j];
    }

    for (int k = columnIndex - 1; k < cols - 1; k++) {
        tmpTable[i][k] = tmpRight[i][k - (columnIndex - 1)];
    }
}
for(int i=0;i
什么阻止了您?编写代码时您面临什么问题?我知道如何将一个数组添加到新数组中,但不知道如何添加第二个数组。arraycopy在这里不起作用,因为我想合并两个数组,而不是附加它们。两个数组的行数相同吗?是的,两个数组的行数相同,但列数不同。新阵列在arr1和arr2I中都有数字列。我无法控制如何管理它们。我正在从csv文件获取数据并对其进行操作。
merged[rowNumber] = row;
for (int i = 0; i < rows; i++) {
    for (int j = 0; j < columnIndex - 1; j++) {
        tmpTable[i][j] = tmpLeft[i][j];
    }

    for (int k = columnIndex - 1; k < cols - 1; k++) {
        tmpTable[i][k] = tmpRight[i][k - (columnIndex - 1)];
    }
}