[英]Concatenating two int[]
有一些簡單的解決方案可以通過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.concat
與Arrays.stream
一起完成此操作,而無需任何自動裝箱或拆箱。 這是它的外觀。
int[] result = IntStream.concat(Arrays.stream(c), Arrays.stream(d)).toArray();
請注意, Arrays.stream(c)
返回一個IntStream
,然后在收集到數組之前將其與其他IntStream
連接起來。
這是輸出。
[1,34,3,1,5]
您可以使用IntStream.concat
簡單地連接原始( int
)流:
int[] m = IntStream.concat(IntStream.of(c), IntStream.of(d)).toArray();
使用for循環,以避免使用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++;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.