Java

【Java】配列→Streamの変換をまとめる

こんにちは、この記事では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)

  1. Stream<String[]>として一旦Streamを作成する。
  2. mapでArrays.streamを利用しString[]→Stream<String>に変換する。
  3. ②で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);

 

以上。