728x90
반응형

1. 중간 연산 (Intermediate Operation)

  • 특징: 연산 결과가 다시 스트림입니다. 그래서 계속 뒤에 .을 찍고 다른 연산을 이어 붙일 수 있어요 (메서드 체이닝).
  • 특징 2: 지연 연산(Lazy)입니다. 최종 연산이 호출되기 전까지는 아무 일도 안 하고 기다립니다.
연산 설명
filter() 조건에 맞는 요소만 골라냄
map() 요소를 다른 형태로 변환함
sorted() 요소들을 정렬함
distinct() 중복을 제거함
limit() 앞에서부터 n개만 자름
peek() 중간 결과 확인 (디버깅용)

2. 최종 연산 (Terminal Operation)

  • 특징: 스트림을 닫고 결과(숫자, 객체, 값 등)를 내놓습니다.
  • 특징 2: 한 번 실행하면 해당 스트림은 재사용할 수 없으며 끝납니다.
연산 설명 결과 타입
count() 요소의 총 개수를 셈 long
collect() 결과를 리스트, 셋 등으로 모음 List, Map
forEach() 각 요소를 출력하거나 처리함 void
anyMatch() 조건에 맞는 게 하나라도 있는지 확인 boolean
allMatch() 모든 요소가 조건을 만족하는지 확인 boolean
reduce() 모든 요소를 하나로 합침 (합계 등) Optional 또는 값

💡 한눈에 보는 요약

  1. 스트림 생성: 반죽과 팥을 준비한다. (Arrays.stream)
  2. 중간 연산: 팥을 넣고, 모양을 잡고, 탄 부분을 깎아낸다. (map, filter)
  • 이때까지는 붕어빵이 완성된 게 아닙니다. 그냥 과정일 뿐이죠.
  1. 최종 연산: 불을 켜서 구워낸 후 접시에 담는다. (count, collect)
  • 드디어 결과물이 나오고 기계는 멈춥니다.

⚠️ 주의할 점

filtermap까지만 쓰고 세미콜론(;)을 찍으면, 자바는 "어? 준비만 하고 요리를 안 하네?" 하고 그냥 넘어가 버립니다.

728x90
반응형

+ Recent posts