There are easy solutions for concatenating two String[]
or Integer[]
in java by Streams
. Since int[]
is frequently used. Is there any straightforward way for concatenating two int[]
?
Here is my thought:
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]
It works, but it actually converts int[]
to Integer[]
, then converts Integer[]
back to int[]
again.
You can use
IntStream.concat
in concert withArrays.stream
to get this thing done without any auto-boxing or unboxing. Here's how it looks.Note that
Arrays.stream(c)
returns anIntStream
, which is then concatenated with the otherIntStream
before collected into an array.Here's the output.
Use for loops, to avoid using toArray().
You can simply concatenate primitive(
int
) streams usingIntStream.concat
as: