본문

[2018.02.06] 34. 컬렉션 VS 스트림 (Java 8)

도입

이번 포스팅에서는 지금 공부하고 있는 Java8의 스트림과 Java8 이전의 컬렉션을 비교하며 공부할 예정이다.



컬렉션과 스트림의 철학적 접근

"Java8 in Action"이라는 책으로 공부하면서 컬렉션과 스트림을 철학적으로 생각해 볼 수 있는 글이 있어서 적어 본다.

철학적인 고찰을 좋아하는 독자라면 스트림을 시간적으로 흩어진 값의 집합으로 간주할 수 있다. 반면 컬렉션은 특정 시간에 모든 것이 존재하는 공간(컴퓨터 메모리)에 흩어진 값으로 비유할 수 있다. 우리는 for-each 루프 내에서 반복자를 이용해서 공간에 흩어진 요소에 접근할 수 있다.

Java8 in Action 중 p 138

참 많은 것을 생각하게 하는 글이라고 생각한다.


해당 글을 읽은 생각을 시각화 하면

이렇게 생각한다.



외부반복 VS 내부반복

컬렉션과 스트림의 큰 차이는 외부반복과 내부반복이다.

컬렉션은 대상(타켓)을 for-each문을 통해 외부반복을 하지만 스트림은 대상(타켓)을 스트림화해 내부반복한다.

내부반복을 사용하므로 작업을 투명하고 병렬적으로 처리하거나 더 최적화된 다양한 순서로 처리 가능하다.




#컬렉션 #스트림 #외부반복 #내부반복

공유

댓글