java - 连接两个 int[]

标签 java arrays lambda java-8 java-stream

通过 Streams 在 java 中连接两个 String[]Integer[] 有很简单的解决方案。由于 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 [] 再次。

最佳答案

你可以使用 IntStream.concatArrays.stream 来完成这件事,而无需任何自动装箱或拆箱。这是它的外观。

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

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

这是输出。

[1, 34, 3, 1, 5]

关于java - 连接两个 int[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54864223/

相关文章:

java - Apache Tika 通过 jar 提取元数据,但不在示例代码中

java - 确定包含来自 Sun bug 数据库的修复的 JRE 版本

Java, boolean 值的二维数组&&比较

c++ - 如果条目大于 90,则打印出字符串的 boolean 函数

java - 打印哈希码来代替数组元素

java - 公历12小时24小时困惑

ios - Objective-C 中的数组初始化问题

c++ - C2665 : 'QObject::connect' : none of the 3 overloads could convert all the arguments types

python - 将 python 对象转换为列表的列表

java - Lambda 表达式 Java 转换