连接两个int []

时间:2019-02-25 10:34:01

标签: java arrays lambda java-8 java-stream

在Java中通过String[]连接两个Integer[]Streams的方法很简单。由于int[]经常使用。是否有任何简单的方法来连接两个int[]

这是我的想法:

int[] c = {1, 34};
int[] d = {3, 1, 5};
Integer[] cc = IntStream.of(c).boxed().toArray(Integer[]::new);
Integer[] dd = Arrays.stream(d).boxed().toArray(Integer[]::new);
int[] m = Stream.concat(Stream.of(cc), Stream.of(dd)).mapToInt(Integer::intValue).toArray();
System.out.println(Arrays.toString(m));

>>
[1, 34, 3, 1, 5]

它可以工作,但是实际上将int[]转换为Integer[],然后再次将Integer[]转换回int[]

3 个答案:

答案 0 :(得分:27)

您可以将IntStream.concatArrays.stream配合使用来完成此任务,而无需任何自动装箱或拆箱。看起来就是这样。

int[] result = IntStream.concat(Arrays.stream(c), Arrays.stream(d)).toArray();

请注意,Arrays.stream(c)返回一个IntStream,然后将其与另一个IntStream串联在一起,然后收集到一个数组中。

这是输出。

  

[1、34、3、1、5]

答案 1 :(得分:19)

您可以使用int来简单地连接原始(IntStream.concat)流:

int[] m = IntStream.concat(IntStream.of(c), IntStream.of(d)).toArray();

答案 2 :(得分:2)

用于循环,以避免使用toArray()。

int[] e = new int[c.length+d.length];
int eIndex = 0;
for (int index = 0; index < c.length; index++){
    e[eIndex] = c[index];
    eIndex++;
}
for (int index = 0; index < d.length; index++){
    e[eIndex] = d[index];
    eIndex++;
}