1

我有(至少)两个多维字符串数组(尺寸不相等),我试图并排放置。那是,

String[][] arrayOne包含以下内容:

aaaaa
aaaaa
aaaaa
aaaaa
aaaaa
aaaaa
aaaaa

...并String[][] arrayTwo包含以下内容:

bbbbbbbb
bbbbbbbb
bbbbbbbb
bbbbbbbb

...并String[][] arrayThree包含以下内容:

ccccccc
ccccccc
ccccccc
ccccccc
ccccccc
ccccccc
ccccccc
ccccccc

我一直未能成功地尝试创建一个返回以下内容的方法(最好作为多维字符串数组,但也可以作为字符串工作):

String[][] result包含以下内容:

               ccccccc
               ccccccc
aaaaa          ccccccc
aaaaa          ccccccc
aaaaa          ccccccc
aaaaa bbbbbbbb ccccccc
aaaaa bbbbbbbb ccccccc
aaaaa bbbbbbbb ccccccc
aaaaa bbbbbbbb ccccccc

所以基本上,该方法会将数组并排放置,将它们全部对齐到底部,然后将它们组合成一个数组。

到目前为止,我解决这个问题的复杂尝试只会产生更多错误,而尝试使用 println 语句等进行调试只会让我更加困惑。而且我认为有人知道一种相当简单的方法来完成这项任务。

如果有人知道,您的帮助将不胜感激!!!

*编辑 - *示例 #2:

aaaa            bbb            ccccc                       ccccc
aaaa   'plus'   bbb   'plus'   ccccc   'yields'   aaaa     ccccc
aaaa                           ccccc              aaaa bbb ccccc
                               ccccc              aaaa bbb ccccc
4

2 回答 2

1

您的问题的(未经测试的)通用解决方案:

编辑: 感谢@Paul Bellora 的测试和确认。

public static <T> T[][] mergeArrays(Class<T> clazz, T[][]... arrays) {
    // determine length of 1st dimension.
    int dim1 = 0;
    for (T[][] arr : arrays) {
        dim1 += arr.length;
    }
    // Create new 2Dim Array
    T[][] result = (T[][]) Array.newInstance(clazz, dim1, 0);
    // Fill the new array with all 'old' arrays
    int index = 0;
    for (T[][] arr : arrays) {
        for (T[] array : arr) {
            // changes within your old arrays will reflect to merged one
            result[index++] = array;
        }
    }
    return result;
}

这就是你所说的:

    String[][] one = // your 1st array here;
    String[][] two = // your 2nd array here;
    String[][] three = // your 3rd array here;
    String[][] four = // your 4th array here;
    // This works with an arbitrary amount of arrays.
    String[][] merged1 = mergeArrays(String.class, one, two, three);
    String[][] merged2 = mergeArrays(String.class, one, two, three, four);
于 2012-11-04T18:54:19.980 回答
0

根据要求,只是一个String版本,仍未测试:

public static String[][] mergeStringArrays(String[][]... arrays) {
    // determine length of 1st dimension.
    int dim1 = 0;
    for (String[][] arr : arrays) {
        dim1 += arr.length;
    }
    // Create new 2Dim Array
    String [][] result = new String[dim1][];
    // Fill the new array with all 'old' arrays
    int index = 0;
    for (String[][] arr : arrays) {
        for (String[] array : arr) {
            // changes within your old arrays will reflect to merged one
            result[index++] = array;
        }
    }
    return result;
}

查看我的第一个答案,了解如何调用此方法。

于 2012-11-04T18:59:49.760 回答