woowacourse-study / 2022-modern-java-in-action

우아한테크코스 4기 모던 자바 인 액션 스터디
10 stars 4 forks source link

스트림이 게으르게 계산하면서 얻는 이점은 무엇일까? #35

Open yh20studio opened 2 years ago

yh20studio commented 2 years ago

문제

스트림이 게으르게 계산하면서 얻는 이점은 무엇일까?

선정 배경

스트림이 컬렉션과의 차이 중에서 중요하게 언급되는 것이 게으른 계산이다. 이를 통해서 얻을 수 있는 이점을 말해보는 것이 스트림을 더욱 잘 쓸 수 있고 더 잘 이해할 수 있지 않을까?

관련 챕터

[4장 스트림 소개

yh20studio commented 2 years ago

점점 시간이 지날수록 데이터의 크기가 커지고 있다.

기존의 java Collection을 이용한다면 모든 데이터를 Java 메모리에 저장하고 로직을 처리하는 것이 부담이 되었을 것이다. 하지만 Stream을 이용할 수 있게 되면서 각 데이터들을 메모리에 저장할 필요 없이 바로 계산을 할 수 있게 되었다. 그리고 불필요한 계산들을 하지 않아도 되는 장점이 생겼다.

책에서는 스트림은 게으르게 만들어지는 컬렉션과 같다. 즉 사용자가 데이터를 요청할 때만 값을 계산한다. 라는 구절과 함께 인터넷 스트리밍, 브라우저 인터넷 검색을 예시로 들고 있다. 만약에 스트림이 없이 컬렉션으로 해당 기능들을 구현해야 했다면 아마도 사용자들은 넷플릭스 영화를 보기 위해서 일단 핸드폰에 영화 전체를 다운받고 시작해야 할지도 모른다. 그리고 구글에서 검색을 할 때 모든 페이지의 검색 결과 데이터가 내 브라우저로 오기 전까지는 아무것도 보지 못하고 기다리고 있어야 할지도 모른다.