目次
こんにちは、この記事ではJavaの配列とStreamの変換についてまとめます。どれか望みの変換が見つかれば幸いです。
- 配列→Stream
- 複数配列→Stream
- 1つ1つの要素→Stream(おまけ)
配列→Stream(Arrays.stream)
Arrays.streamを使えばOK。プリミティブ型の場合はIntStreamとかを返してくれる。
int[] →IntStream
int[] int_array = new int[]{1, 2, 3};
IntStream intStream = Arrays.stream(int_array);
String[] →Stream
String[] str_array = new String[] {"a", "b", "c"};
Stream<String> strStream = Arrays.stream(str_array);
要素1つ1つ→Stream(Arrays.of)
Stream.ofを使えばOK。プリミティブ型の場合はIntStream.ofなどが用意してある。
int → IntStream
IntStream intStream = IntStream.of(1, 2, 3);
String→Stream<String>
Stream<String> strStream = Stream.of("a", "b", "c");
複数の配列を1つのStreamに①(Stream.concat)
Stream.concatを使えばOK。プリミティブ型の場合はIntStream.concatなどが用意してある。
一旦配列をStreamに変換し、Stream.concatで合体する。
int[] int[] →IntStream
int[] int_array1 = new int[]{1, 2, 3};
int[] int_array2 = new int[]{1, 2, 3};
IntStream mergedIntStream = IntStream.concat(Arrays.stream(int_array1), Arrays.stream(int_array2));
String[] Stream[]→Stream<String>
String[] array1 = new String[] {"a", "b", "c"};
String[] array2 = new String[] {"a", "b", "c"};
Stream<String> merged = Stream.concat(Arrays.stream(array1), Arrays.stream(array2));
複数の配列を1つのStreamに②(faltMap)
- Stream<String[]>として一旦Streamを作成する。
- mapでArrays.streamを利用しString[]→Stream<String>に変換する。
- ②でflatMapを利用することで、Stream<Stream<String>>ではなくStream<String>になる。
String[] array1 = new String[] {"a", "b", "c"};
String[] array2 = new String[] {"a", "b", "c"};
Stream<String[]> arrayStream = Stream.of(array1, array2);
Stream<String> flated = arrayStream.flatMap(Arrays::stream);
以上。