我有一些String []数组,例如:
['a1', 'a2']
['b1', 'b2', 'b3', 'b4']
['c1']
Run Code Online (Sandbox Code Playgroud)
我如何混合它们,以便得到['a1', 'b1', 'c1', 'a2', 'b2', 'b3', 'b4'](a的0个元素,然后b,c,a,b,c的1个元素等)?谢谢
更准确地说,结果数组必须包含第一个数组的第一个值,然后是第二个数组的第一个值,...,最后一个数组的第一个值,第一个数组的第二个值,......,最后一个数组的第二个值,...,最大数组的最后一个值.如果数组的大小不同,那么较小的数组就不会被考虑在内.
这是一个例子:
a1 a2 a3 a4
b1 b2 b3 b4 b5 b6 b7
c1 c2
d1 d2 d3 d4 d5
Combines into (brackets are just to highlight steps, so they really mean nothing):
(a1 b1 c1 d1) (a2 b2 c2 d2) (a3 b3 d3) (a4 b4 d4) (b5 d5) (b6) (b7)
Run Code Online (Sandbox Code Playgroud)
另外,我想组合可变数量的数组,而不仅仅是3或4
Mau*_*rry 17
String result[] = new String[a.length+b.length+c.length];
for (int i = 0, j = 0; j < result.length; ++i) {
if (i < a.length) {
result[j++] = a[i];
}
if (i < b.length) {
result[j++] = b[i];
}
if (i < c.length) {
result[j++] = c[i];
}
}
Run Code Online (Sandbox Code Playgroud)
更新:更一般地说
String[] merge(String[]... arrays) {
int length = 0;
for (String[] a: arrays) {
length += a.length;
}
String result[] = new String[length];
for (int i = 0, j = 0; j < length; ++i) {
for (String[] a: arrays) {
if (i < a.length) {
result[j++] = a[i];
}
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3519 次 |
| 最近记录: |