当前位置: 首页 > 面试题库 >

如何在Java中混合两个数组?

杜建章
2023-03-14
问题内容

我有一些String []数组,例如:

['a1', 'a2']
['b1', 'b2', 'b3', 'b4']
['c1']

如何混合它们,以便得到['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)

另外,我想结合可变数量的数组,而不仅仅是3或4


问题答案:
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];
    }
}

更新:更一般地

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


 类似资料:
  • 我有两个关于存储在两个单独图像中的数据的绘图。我需要把它们放在一张图片中,这样我才能看到它们的区别。如何在javaFX中实现这一点?

  • 大家好,我正在学习如何使用MySQL和Node JS,我正在尝试找到一个混合两个表的查询。如果我得到一个表“users”,其中有列“userid”、“userimage”,另一个表“comments”,其中有列“commentID”、“comment”、“commentuserid”、“threadid”。你知道我是否可以添加用户的图片谁评论在这个查询的结果请?

  • 问题内容: 我有两个数组。 我需要合并这些数组,并在下拉列表中显示为 我怎么能使用swift.im新手来快速获得此结果,有人可以帮忙吗? 问题答案: 压缩数组并连接结果:

  • 问题内容: 我在数组列表中有很多Slot类型的对象。 插槽类别如下所示- 让类型列表被调用。插槽根据开始时间进行排序。一个时隙的结束时间可以等于下一时隙的开始时间,但是它们永远不会重叠。 是否有任何可能的方式可以使用Java 8流在此列表上进行迭代,并且如果一个的结束时间与下一个的开始时间匹配,则将两个插槽合并并输出到一个插槽中? 问题答案: 我的免费StreamEx库完全支持这种情况,该库增强了

  • 我在一秒钟内通过蓝牙从远程设备接收到两个字符串。(第一个字符串,然后在几毫秒后是第二个字符串)。例如: 和 我应该如何以及在哪里存储我的第一个字符串,等待下一个字符串,然后像头块一样组合这两个字符串?有什么建议吗。

  • 问题内容: 如何在Java中连接两个数组? 问题答案: 使用Apache Commons Lang库 例如: 在Java 8中使用Stream: 或者像这样,使用flatMap: 为此,你必须使用反射: