언어/JAVA

[JAVA] Stream API

코딩맛집 2024. 1. 5. 19:51

Stream API는 순차적 or 병렬적으로 다량의 데이터 처리 작업을 돕고자 Java8에 추가되었다.

 

중간 연산

중간 연산(Intermediate Operation)은 Stream을 전달 받아서 다른 Stream으로 변환하고 Stream을 반환한다.

중간 연산 메소드를 알아보겠습니다.

 

filter(조건)

  • filter는 조건에 맞는 요소로 구성된 새로운 스트림을 반환

map(함수)

  • 주어진 함수를 적용한 형태로 스트림을 변환

distinct()

  • 중복 제거

sorted()

  • 정렬

limit()

  • Stream의 요소를 제한

skip()

  • Stream의 처음 일부 요소를 건너뜀

peek()

  • Stream의 요소를 소모하지 않는다. 연산과 연산 사이에 올바르게 처리되었는지 확인하기 위해 사용한다.
int[] num = {1, 2, 3, 4, 5};

int sum = Arrays.stream(num)
        .peek(s -> System.out.print(s))//12345
        .sum();
System.out.println();
System.out.println(sum);//15

 

최종 연산

최종 연산(Terminal Operation)은 Stream을 리턴하지 않으며 연산 결과가 Stream이 아니므로 Stream Pipe Line에서 한 번만 가능합니다.

ex) collect, allMatch, count, forEach, min, max ...etc

void forEach(), void forEachOrdered()

  • 요소에 지정된 작업 수행

long count()

  • 스트림 요소 개수 반환

Optional max(), Optional min()

  • 최대 최소값 반환

Optional findAny()

  • 스트림 요소 중 아무거나 하나 반환

Optional findFirst()

  • 스트림의 첫 번째 요소 반환

boolean allMatch(), boolean anyMatch(), boolean noneMatch(),

  • 모두 만족하는지, 하나라도 만족하는지, 모두 만족하지 않는지 

Object[] toArray()

  • 배열로 반환

reduce()

  • 스트림 요소를 하나씩 줄여가며 계산

collect()

  • 스트림 요소를 수집