• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

퀴즈 #10 질문이요~~

23.02.04 00:09 작성 조회수 190

0


강의 잘 듣고 있습니다! 이것저것 해보다가 궁금한게 생겼어요.

19번째 줄이 실행되는 순간 customerList의 fee 값이 바뀌어야 하는거 아닌가요? 20번째 줄을 안쓸때는 아래처럼 fee값이 안바뀐채로 출력되는데

챈 50 0
레 45 0
모 40 0
벤 20 0
제 10 0

20번째 줄을 쓰니까 이렇게 나오는 이유가 궁금합니다!

챈 50 2000
레 45 2000
모 40 2000
벤 20 0
제 10 0

답변 1

답변을 작성해보세요.

1

안녕하세요?
stream 연산에는 filter(), map() 과 같은 중간 연산이 있고 forEach(), count(), sum() 과 같은 최종 연산이 있습니다. 중간 연산은 여러 번 들어갈 수 있지만 최종 연산은 맨 뒤에 딱 한 번만 들어갈 수 있습니다. 이때, 최종 연산이 호출되어야 앞의 중간 연산들이 적용된다는 특징이 있답니다. 용어로는 지연 연산 (lazy evaluation) 이라고 부릅니다.
그래서 20번째 줄의 최종 연산인 .forEach() 문을 주석 처리 등으로 제외하고 실행했을 때는 19번째 줄의 .map() 이 아직은 적용되지 않고 최종 연산이 호출되기를 기다리는 상태이므로 fee 값이 바뀌지 않습니다 😊
감사합니다.