按顺序合并数组

时间:2019-06-10 10:55:45

标签: java arrays

我只是想知道是否可以按顺序合并两个数组。

我们是否必须使用普通数组,arraylist或其他等等。请说我们有2个数组变量

//Array 1 :
String[] Array_1 = {"a","b","c"}
String[] Array_2 = {"1","2","3"}

//Now we want to combine both of those array to one. The trick is, we have to do it in such 
//sequence


//Outout
//Array_3 when combined should display in such manner = {"a","1","b","2","c","3"}

预先感谢您:)

3 个答案:

答案 0 :(得分:5)

是的,您可以遍历数组,将其元素添加到List并将该List转换为数组。

或者您也可以对流执行相同操作:

String[] Array_3 = 
    IntStream.range(0,Array_1.length)
             .boxed()
             .flatMap(i -> Stream.of(Array_1[i],Array_2[i]))
             .toArray(String[]::new);
System.out.println (Arrays.toString(Array_3));

输出:

[a, 1, b, 2, c, 3]

答案 1 :(得分:2)

如果所有数组的长度都相同,并且如果您使用的是Java 8,则可以像这样使用Streams:

String[] result = IntStream.range(0, array_1.length)
        .mapToObj(index -> Stream.of(array_1, array_2)
                .map(arr -> arr[index])
        ).flatMap(strm -> strm.collect(Collectors.toList()).stream())
        .toArray(String[]::new);

或:

List<String[]> arrays = Arrays.asList(array_1, array_2);

String[] strings = IntStream.range(0, array_1.length)
        .mapToObj(index -> arrays.stream().map(arr -> arr[index])
        ).flatMap(strm -> strm.collect(Collectors.toList()).stream())
        .toArray(String[]::new);

输出:

[a, 1, b, 2, c, 3]

答案 2 :(得分:1)

这可以通过实现自己的方法而不是使用任何内置的Standard Java Libraries来完成。

如果您认为自己将不断合并或减少数据结构,那么list将是可行的方法,因为List可以动态增长和收缩,否则,如果它是一次性的,则继续使用Arrays。

edX\\-NYIF\\+CR\\.5x

列表实现更容易,因为我们不需要跟踪自己的位置,并且可以动态添加各个字符串。