JAVA

Java Stream

서묘_ 2022. 1. 13. 19:34

Stream

- 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것.

 

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

- 배열, 컬렉션 대상 동일 연산 수행

- 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게

 

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

- 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모된다

- 다른 연산을 위해서는 새로운 스트림을 생성해야 한다

 

3. 스트림은 기존 자료 변경 불가

- 스트림 생성은 별도의 메모리 공간을 사용한다.

- 기존 자료 변경 불가

 

4. 스트림 연산은 중간 연산과 최종 연산으로 구분된다.

- 중간 연산은 여러개 적용 가능하다

    filter() - 조건에 맞는 요소들만 남긴다

    map() - 해당 데이터 중에서 특정 데이터만 꺼낸다

    sorted() - 정렬한다

 

- 최종 연산은 마지막 한번만 적용한다

    최종 연산 후에 스트림은 더 이상 다른 연산 적용이 불가

    forEach() - 요소를 하나씩 꺼내온다

    count() - 요소의 개수 -> long타입으로 (int)캐스팅해서 사용한다

    sum() - 요소의 합

    reduce(초기값,(a,b)->a+b) - 사용자 지정 연산

        요소들을 초기값을 정해두고 지정된 연산대로 진행한다 -> 연산 수정이 가능하다

    get() - 연산 후 마지막 남은 값을 가져온다

 

- 최종 연산 호출시 중간 연산 결과를 모두 적용한다 => 지연 연산