자바 Stream 이란

컬렉션에 저장된 요소들을 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다.

Iterator 와 비슷한 반복자이다.
내부 반복자를 사용해 병렬처리가 쉽다고 한다.(외부는 개발자가 직접 요소를 반복하는 패턴for,while등)
개발자는 로직 코드만 작성해주면 된다.


스트림의 흐름

스트림 생성 > 중간연산 지정(스트림 리턴) > 종료연산을 적용해 결과 리턴(기본이거나 optional)


중간연산(여러번 사용가능)

filter - predicate를 인자로 받아서 true인 요소 반환, 조건에 맞는건만 거름 distinct - 유일한 값 반환(중복제거)
limit - 지정된 숫자만큼 반환
map - 스트림 객체T를 U로 반환 파라미터로 Function<T,U> 사용, 스트림의 각 요소를 연산 flatmap - 배열Type의 경우 펴서 mapping sort - 스트림 요소 정렬


최종연산

anyMatch - 적어도 한가지 요소와 일치하는지
allMatch - 전부 일치하는지
nonMatch - 불일치
findAny - 임의의 요소
findFirst - 첫번째 요소
reduce - init,operator, operator 사용 최대최소비교, 누적된 값 계산


컬렉터

collect는 리듀싱연산을 하며 collector 작업을 처리한다.

toList - 스트림의 모든 항목을 리스트로 수집
toSet - 모든항목을 중복없이 set으로 수집
toCollection - 컬렉션으로 수집
counting - 항목 수 계산
joining - toString에서 결과 문자열 연결
groupingBy - 하나의 프로퍼티값으로 스트림항목들을 그룹화혀여 맵의 키로 사용