在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[]
。
答案 0 :(得分:27)
您可以将IntStream.concat
与Arrays.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++;
}