我遇到需要连接两个二维数组的情况。
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()。我确信必须有一个更简单的解决方案,但到目前为止还没有一个解决方案。
答案 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