Java - Streamを配列に変換する

ストリームを配列に変換する方法を紹介します。

1. Stream.toArray()でStreamを配列に変換

Stream.toArray(Type[]::new) はストリームを配列に変換します。

次の例では、文字列のストリームを文字列配列に変換します。

import java.util.ArrayList;
import java.util.List;

public class ConvertStreamToArray {

    public static void main(String[] args) {

        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");

        String[] result = list.stream()
                .map(String::toUpperCase)
                .toArray(String[]::new);

        for (String s : result) {
            System.out.println(s);
        }
    }
}

Output:

A
B
C

他のタイプも上記と同じ方法で配列に変換できます。

以下は List<Integer>Integer[] に変換する例です。

import java.util.ArrayList;
import java.util.List;

public class ConvertStreamToArray2 {

    public static void main(String[] args) {

        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);

        Integer[] result = list.stream()
                .map(x -> x*x)
                .toArray(Integer[]::new);

        for (Integer n : result) {
            System.out.println(n);
        }
    }
}

Output:

1
4
9

2. IntStreamを配列に変換

IntStreamを Integer[]または int[]に変換できます。

LongStream、DoubleStreamなどもIntStreamと同じ方法で配列に変換できます。

2.1 Stream -> Integer[]

Stream を Integer[] に変換する場合は boxed() で int を Integer に変換した後に Array に変換します。

import java.util.Arrays;
import java.util.stream.IntStream;

public class ConvertStreamToArray3 {

    public static void main(String[] args) {

        int[] num = {1, 2, 3};

        IntStream intStream = Arrays.stream(num);

        Integer[] result = intStream
                .map(x -> x*x)
                .boxed()
                .toArray(Integer[]::new);

        for (Integer n : result) {
            System.out.println(n);
        }
    }
}

Output:

1
4
9

2.2 Stream -> int[]

ストリームを int[] に変換する場合、 toArray() に変換させることができます。

import java.util.Arrays;
import java.util.stream.IntStream;

public class ConvertStreamToArray4 {

    public static void main(String[] args) {

        int[] num = {1, 2, 3};

        IntStream intStream = Arrays.stream(num);

        int[] result = intStream
                .map(x -> x*x)
                .toArray();

        for (int n : result) {
            System.out.println(n);
        }
    }
}

Output:

1
4
9

Related Posts

codechachaCopyright ©2019 codechacha