Java - Stream을 배열로 변환

Stream을 배열(Array)로 변환하는 방법을 소개합니다.

1. Stream.toArray()로 Stream을 배열로 변환

Stream.toArray(Type[]::new)는 Stream을 배열로 변환합니다.

다음 예제는 문자열에 대한 Stream을 String 배열로 변환합니다.

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[]

Stream을 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
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha