我有(至少)两个多维String数组(具有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数组,但是作为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
答案 0 :(得分:1)
针对您的问题的(未经测试的)一般解决方案:
编辑: 感谢@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);
答案 1 :(得分: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;
}
看看我的第一个答案,了解如何调用此方法。