连接两个int []

Sim*_* Z. 24 java arrays lambda java-8 java-stream

有简单的解决方案可以连接两个String[]Integer[]在java中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]
Run Code Online (Sandbox Code Playgroud)

它可以工作,但它实际上转换int[]Integer[],然后再转换Integer[]回来int[].

Rav*_*ala 27

您可以一起使用IntStream.concat,Arrays.stream无需任何自动装箱或拆箱即可完成此操作.这是它的外观.

int[] result = IntStream.concat(Arrays.stream(c), Arrays.stream(d)).toArray();
Run Code Online (Sandbox Code Playgroud)

请注意,Arrays.stream(c)返回an IntStream,然后IntStream在收集到数组之前与另一个连接.

这是输出.

[1,34,3,1,5]


Nam*_*man 19

您可以int使用IntStream.concatas 简单地连接primitive()流:

int[] m = IntStream.concat(IntStream.of(c), IntStream.of(d)).toArray();
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,只是读得更好,但值得注意的是,引擎盖下的`IntStream.of`使用了`Arrays.stream`本身. (2认同)