← 질문 목록
#71깊이 0

중간 연산을 바로 실행하지 않는 이유는?

언어 · 런타임기초성능

종료 연산이 요구할 때까지 미루면 여러 중간 연산을 한 번의 순회로 결합할 수 있다. 단락 종료로 필요한 원소만 처리할 수도 있다.

  1. 스트림 소스중간 연산

    실행하지 않고 단계를 기록한다

  2. 종료 연산스트림 소스

    원소 처리를 요구한다

  3. 스트림 소스결과

    필터와 변환을 한 순회로 적용한다

filter와 map 같은 상태 없는 연산은 원소 하나씩 이어서 처리한다. sorted와 distinct 같은 상태 있는 연산은 지연 실행이어도 버퍼를 쓸 수 있다.

findFirst와 anyMatch는 답이 정해지면 순회를 멈춘다. 무한 스트림도 그 전에 전체 입력을 요구하는 연산이 없다면 유한 시간에 끝날 수 있다.

스트림은 한 번만 소비할 수 있다. 공유 상태를 바꾸는 부수 효과는 지연 실행과 병렬 처리에서 순서와 안전성을 흐리므로 피해야 한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

중간 연산을 바로 실행하지 않는 이유는?