簡體   English   中英

合並Java中的兩個多維字符串數組

[英]Merge two multidimensional string arrays in Java

我(至少)有兩個多維String數組(具有不相等的維數),我試圖將它們放在一起。 那是,

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數組,但是String也可以):

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

一種(未試用的)通用解決方案:

編輯: 謝謝@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);

根據要求,只是一個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;
}

查看我的第一個答案,看看如何調用此方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM