有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

所以我想在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}}

共 (4) 个答案

  1. # 1 楼答案

    我设法让它与这个工作,可能不是最好的解决方案。我试试其他的:

    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)];
        }
    }
    
  2. # 2 楼答案

    System.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);
    }
    

    这是一种骇客和粗俗的方式——如果你能控制arr1arr2的创建和维护方式,你应该在那里对它们进行更改,使它们不必做这样的事情,这是不可远程扩展的

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

  3. # 3 楼答案

    你有

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

    int m = arr1[0].length;
    int n= arr2[0].lenght;
    String[][] arr3 = new string[2][m+n];
    

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

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

    现在将arr1arr2合并到arr3中,就像你的例子一样:

    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];
        }
    }
    
  4. # 4 楼答案

    由于我们知道每个数组中的行数相同,这意味着新数组将具有相同的行数。所以我们可以从

    String[][] merged = new String[size][]; //where size is number of rows
    

    现在我们可以专注于用适当的行填充这个数组。为了创造它们,我们需要

    • 迭代每对行
    • 数一数他们的专栏
    • 基于该计数创建新的行数组,如String[] row = new String[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];
    

    现在只需将这一行放入合并数组

    merged[rowNumber] = row;