1

私は(少なくとも)2つの多次元文字列配列(UNEqual次元)を持っており、それを並べて配置しようとしています。あれは、

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

したがって、基本的に、メソッドは配列を並べて配置し、それらをすべて下に揃えて、1 つの配列に結合します。

これまでのところ、この問題を解決するための私の複雑な試みは、より多くのエラーを作成しただけであり、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

An (untested) general solution to your problem:

EDIT: Thanks you @Paul Bellora for testing and confirming.

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;
}

This is how you call it:

    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 に答える