스트림 (stream)

자료의 대상과 관계 없이 동일한 연산을 수행

  • 배열, 컬렉션을 대상으로 동일한 연산을 수행함
  • 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 함

한 번 생성하고 사용한 스트림은 재사용 불가

  • 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨
  • 다른 연산을 위해서는 새로운 스트림을 생성해야함

스트림 연산은 기존 자료를 변경하지 않음

  • 자료에 대한 스트림을 생성하면 별도의 메모리 공간을 사용하므로 기존 자료를 변경하지 않음

스트림 연산은 중간 연산과 최종 연산으로 구분됨

  • 스트림에 대한 중간 연산은 여러 개 적용될 수 있지만 최종 연산은 마지막에 한 번만 적용됨
  • 최종 연산이 호출되어야 중간연산의 결과가 모두 적용됨
  • 이를 지연 연산이라고 함

스트림 연산 - 중간 연산

  • 중간 연산 - filter(), map()
  • 조건에 맞는 요소를 추출(filter() 하거나 요소를 변환(map())
  • 문자열의 길이가 5 이상인 요소만 출력하기


reduce() 연산

  • 정의된 연산이 아닌 프로그래머가 직접 지정하는 연산을 적용
  • 최종 연산으로 스트림의 요소를 소모하며 연산 수행
  • 배열의 모든 요소들의 합을 구하는 reduce()연산 생성하기
Arrays.stream(arr).reduce(0, (a,b) -> a+b));
  • 첫번 째 숫자는 초깃값
  • 두번 째 요소로 전달되는 람다식에 따라 다양한 기능을 수행

reduce() 연산 예제 - 배열 내 제일 긴 문자열  찾기

  • 람다식으로 구현

  • 함수형 인터페이스 구현

'Back-end > java' 카테고리의 다른 글

자바 입출력  (0) 2021.06.24
예외 처리  (0) 2021.06.24
람다식  (0) 2021.06.23
내부클래스  (0) 2021.06.23
컬렉션 프레임워크  (0) 2021.06.22

+ Recent posts