6

2 つの 2 次元配列を連結する必要がある状況があります。

Object[][] getMergedResults() {
    Object[][] a1 = getDataFromSource1();
    Object[][] a2 = getDataFromSource2();
    // I can guarantee that the second dimension of a1 and a2 are the same
    // as I have some control over the two getDataFromSourceX() methods

    // concat the two arrays
    List<Object[]> result = new ArrayList<Object[]>();
    for(Object[] entry: a1) {
        result.add(entry);
    }
    for(Object[] entry: a2) {
        result.add(entry);
    }
    Object[][] resultType = {};

    return result.toArray(resultType);
}

この投稿で 1 次元配列の連結の解決策を見てきましたが、2 次元配列で機能させることができませんでした。

これまでのところ、私が思いついた解決策は、両方の配列を反復処理し、各メンバーを ArrayList に追加してから、その配列リストの toArray() を返すことです。もっと簡単な解決策があるに違いないと確信していますが、これまでのところ解決策を見つけることができませんでした。

4

3 に答える 3

7

あなたは試すことができます

Object[][] result = new Object[a1.length + a2.length][];

System.arraycopy(a1, 0, result, 0, a1.length);
System.arraycopy(a2, 0, result, a1.length, a2.length);
于 2012-12-05T11:58:25.623 に答える
1

Apache Commons Library - ArrayUtilsを使用できます。2 番目の次元のインデックスのみを変更し、行全体をマージします。

于 2012-12-05T11:51:32.163 に答える