我只是想知道是否可以按顺序合并两个数组。
我们是否必须使用普通数组,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"}
预先感谢您:)
答案 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
列表实现更容易,因为我们不需要跟踪自己的位置,并且可以动态添加各个字符串。