• 스트림 API의 특징
    1. 배열, 컬랙션 등을 대상으로 연산을 수행한다.
    2. 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 만든다.
    3. 재사용 불가
    4. 자료에 대한 스트림을 생성하면 별도의 메모리 공간을 사용하므로 기존 자료를 변경하지 않는다.
    5. 중간 연산(필터-맵)과 최종 연산으로 구분된다.
    6. 중간 연산은 여러 번 적용될 수 있지만, 최종 연산은 마지막에 한 번만 적용된다.
    7. 최종 연산이 호출되면 중간 연산 결과가 모두 적용된다.
      1. 이를 지연 연산이라고 한다.
    8. 변수명.stream().중간 연산.최종연산 형태로 사용된다.
  • 중간 연산(intermediate operation)
    1. 스트림 필터링 : filter(), distinct()
      • filter() : 조건에 맞는 요소 출력
      • distinct() : 중복 요소 제거
    2. 스트림 변환 : map() - 해당 스트림의 요소들을 주어진 함수에 인수로 전달하여 새로운 스트림 반환
      • mapToInt, mapToLong 형태로 해당하는 데이터 타입을 반환한다.
    3. 스트림 제한 : limit(), skip()
      • limit() : 해당 개수만큼 반환
      • skip() : 해당 갯수만큼을 제외한 나머지 요소 반환
    4. 스트림 정렬 : sorted() - 정렬 기능
    5. 스트림 연산 결과 확인 : peek() - 연산 사이 결과 확인용, 디버깅 용도로 많이 사용
  • 최종 연산(terminal operation)
    1. 요소 출력 : forEach() - 스트림의 모든 요소 출력하는 용도, 반환 타입(void)
    2. 요소 소모 : reduce() - 모든 요소를 소모하여 연산을 수행한 결과를 반환
    3. 요소 검색 : findFirst(), findAny() - 해당 스트림에서 첫 번째 요소를 참조하는 Optional 객체 반환
      • findAny() : 병렬 스트림인 경우에 사용
    4. 요소 검사 : anyMatch(), allMatch(), noneMatch()
      • anyMatch() : 해당 스트림의 일부 요소가 특정 조건을 만족할 경우 true 반환
      • allMatch() :  해당 스트림의 모든 요소가 특정 조건을 만족할 경우 true 반환
      • noneMatch() : 해당 스트림의 모든 요소가 특정 조건을 만족하지 않을 경우 true 반환
    5. 요소 통계 : count(), min(), max()
      1. count() : 요소의 총 개수를 long 타입 반환
      2. min(), max() : 가장 작은, 큰 값을 가지는 요소를 참조하는 Optional 객체 반환
    6. 요소 연산 : sum(), average() - 합, 평균

'백엔드 > JAVA' 카테고리의 다른 글

class와 메모리 구조  (0) 2021.08.31
상수, 리터럴, enum  (0) 2021.08.31
람다 표현식(lambda expression), 메소드 참조  (0) 2021.08.22
제네릭(Generic) 문법과 Optional 클래스  (0) 2021.08.22
배열  (0) 2021.08.21