如何在java中合并2D数组?
所以我想在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
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)];
}
}