如何在Java中连接二维数组

时间:2012-12-05 11:44:49

标签: java arrays concatenation

我遇到需要连接两个二维数组的情况。

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

我已经查看了this post中一维数组串联的解决方案,但无法使其适用于我的二维数组。

到目前为止,我提出的解决方案是迭代两个数组并将每个成员添加到ArrayList,然后返回该数组列表的Array()。我确信必须有一个更简单的解决方案,但到目前为止还没有一个解决方案。

3 个答案:

答案 0 :(得分:4)

你可以尝试

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

答案 1 :(得分:1)

您可以使用Apache Commons Library - ArrayUtils。仅更改第二维的索引并合并整行。

答案 2 :(得分:0)

这是我用于2D数组连接的方法。它部分使用了Sergio Nakanishi的答案,但增加了两个方向连接的能力。

git log --name-only --pretty=format: --since '1 month ago' --no-merges | sort | uniq -c | sort -n