출력결과 예상하기

jinwook han·2024년 4월 29일
0

다음 코드의 출력을 예상한다.

코드

Arrays.asList(1,2,3,4,5,6,7,8,9,10)
    .stream()
    .peek(a -> System.out.println("init " + a))
    .filter(a -> a % 2 == 0)
    .peek(a -> System.out.println("filtered " + a))
    .map(a -> a * 2)
    .forEach(a -> System.out.println("mapped " + a));

출력

init 1
init 2
filtered 2
mapped 4
init 3
init 4
filtered 4
mapped 8
init 5
init 6
filtered 6
mapped 12
init 7
init 8
filtered 8
mapped 16
init 9
init 10
filtered 10
mapped 20

설명

1,2,3,4,5,6,7,8,9,10 숫자들이 있다.
위 예시에서 filter와 map을 할 때 1~10 수 전체를 필터 후 map을 하지 않는다.
1에 대해서 filter를 하고, 2에 대해서 filter와 map을 하고, 3에 대해서 filter를 한다.
각각의 수에 대해 순차적으로 filter와 map을 한다.
무한한 스트림을 limit()등을 사용해 처리할 수 있는 이유도, 각각의 원소에 대해 순차적으로 처리하기 때문일 것이다.

0개의 댓글

관련 채용 정보