Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

스트림 연산은 어떻게 작동할까? #38

Open
syoun602 opened this issue Mar 21, 2022 · 1 comment
Open

스트림 연산은 어떻게 작동할까? #38

syoun602 opened this issue Mar 21, 2022 · 1 comment
Assignees
Labels
ch4 about chapter 4

Comments

@syoun602
Copy link

문제

스트림 연산의 시작과 끝이 어떻게 이루어지는 지에 대한 고찰

선정 배경

스트림 연산을 구분하는 방법에 대한 생각 정리하기.

관련 챕터

  • [4장] 스트림 소개
  • p. 150
@syoun602 syoun602 added the ch4 about chapter 4 label Mar 21, 2022
@syoun602 syoun602 self-assigned this Mar 21, 2022
@syoun602
Copy link
Author

syoun602 commented Mar 29, 2022

스트림을 통해 배열, 컬렉션 등의 데이터들을 가공할 수 있다.

이때 스트림은 생성, 중간 연산, 최종 연산 순으로 진행되는데, 최종 연산이 없으면 아무 결과도 얻지 못한다.

  • 스트림 인터페이스는 연산을 두 가지로 구분할 수 있다. - 중간 연산과 최종 연산

중간 연산이란 연결할 수 있는 스트림 연산이며 최종 연산이란 스트림을 닫는 연산이다.

중간 연산을 여러개 연결해서 질의를 만들 수 있는데, 이때 중요한 특징은 단말 연산을 스트림 파이프라인에 실행하기 전까지는 아무 연산도 수행하지 않는다는 것

  • 즉, 중간 연산을 호출하는 것은 단지 어떤 작업이 수행되어야 하는지를 지정해주는 것
  • 중간 연산을 합친 다음에 합쳐진 중간 연산을 최종 연산으로 한 번에 처리 - 이를 게으르다고 표현함
  • 중간 연산은 조건에 맞는 요소를 추출(filter()) 하거나 요소를 변환(map()) 한다
    • 예를 들어, 문자열 길이가 5보다 작은 것들로 filter하거나 플레이어 객체에서 플레이어의 이름만 가져오기
  • filter와 map은 서로 다른 연산이지만 한 과정으로 병합된다 → 루프 퓨전

최종 연산은 스트림 파이프라인에서 결과를 도출한다. 최종 연산에 의해 반환되는 결과는 List, Integer, void 등 스트림이 아닌 결과를 반환한다.

주의 - 스트림은 한 번만 소비될 수 있기 때문에 최종 연산이에 스트림은 더 이상 다른 연산을 적용할 수 없다.

  • 예시: forEach(),count(), sum(), reduce(), collect() 등이 있다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ch4 about chapter 4
Projects
None yet
Development

No branches or pull requests

1 participant