Java by Streams
)で2つのString[]
またはInteger[]
を連結する簡単な解決策があります。int[]
が頻繁に使用されるため、 2つを連結する簡単な方法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++;
}