STUDY/JAVA

JAVA - Stream(스트림)

3unB 2022. 5. 16. 11:24
반응형
스트림 ?
   여러 자료의 처리에 대한 기능을 구현해 놓은 클래스

1. 스트림 특징

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

  - 한 번 생성 & 사용한 스트림은 재사용 할 수 없음

  - 스트림의 연산은 기존 자료에 영향을 주지 않음

 

2. 스트림연산에는 중간연산과 최종연산 두 가지가 있음

  - 중간연산 : 자료를 거르거나 변경하여 또 다른 자료를 내부적으로 생성

  - 최종연산 : 생성된 내부자료를 소모해 가면서 연산을 수행

 

중간연산 : filter(), map()

   filter() : 조건을 넣고 그 조건에 참인 경우만 추출

   map() : 이름만 출력

최종연산 : forEach(), count(), sum(), reduce()

   forEach() : 하나씩 출력   count() : 개수 출력   sum() : 합계   reduce()

 

*배열 요소의 합과 개수출력

 

Arrays에 stream을 호출 한 뒤 sum()연산으로 배열에 저장된 값을 모두 더함

Arrays에 stream을 호출 한 뒤 count()연산으로 배열의 요소 개수를 반환

   -> Type mismatch : cannot convert from long to int 

   -> (int)형으로 변환

 


Collection에서 스트림 활용(ArrayList)

  ⓐ. ArrayList 생성

  ⓑ. stream메서드 사용해서 스트림 생성

  ⓒ. 모든 요소를 하나씩 출력(forEach())

       : forEach메서드가 수행 -> 요소가 하나씩 변수 s에 대입 -> 매개변수로 받아 출력문 호출

  ⓓ. 글자크기가 5 이상인 요소 출력(filter, forEach)

      : 위에서 stream변수를 생성했지만 forEach가 수행되면서 자료가 소모됨 -> 새로 스트림을 생성해야함

 

 

반응형