使用 Java 流合并一对 `int` 数组

Bas*_*que 3 java arrays merge java-stream

本页展示了如何将两个Integer对象数组组合成一个Object对象数组。

Integer[] firstArray = new Integer[] { 10 , 20 , 30 , 40 };
Integer[] secondArray = new Integer[] { 50 , 60 , 70 , 80 };
Object[] merged = 
        Stream
        .of( firstArray , secondArray )
        .flatMap( Stream :: of )
        .toArray()
;
Run Code Online (Sandbox Code Playgroud)

Arrays.toString( 合并): [10, 20, 30, 40, 50, 60, 70, 80]

? 有没有办法使用 Java 流来连接一对原始int值数组而不是对象?

int[] a = { 10 , 20 , 30 , 40 };
int[] b = { 50 , 60 , 70 , 80 };
int[] merged = … ?
Run Code Online (Sandbox Code Playgroud)

我意识到使用 Java 流可能不是最有效的方法。但我对原语和 Java 流的相互作用很好奇。

我知道IntStream但看不到如何将其用于此目的。

cac*_*co3 9

IntStream.concat

将每个数组转换为IntStream. 然后调用IntStream.concat组合。

最后,int通过调用生成一个数组IntStream::toArray

int[] a = { 10 , 20 , 30 , 40 };
int[] b = { 50 , 60 , 70 , 80 };

int[] merged = IntStream.concat(IntStream.of(a), IntStream.of(b)).toArray();

System.out.println(Arrays.toString(merged));
Run Code Online (Sandbox Code Playgroud)

查看此代码在 IdeOne.com 上实时运行

输出:

[10, 20, 30, 40, 50, 60, 70, 80]
Run Code Online (Sandbox Code Playgroud)

提示:要对结果进行排序,请.sorted().toArray(). 正如在 IdeOne.com 上看到的那样