/////
Search
Duplicate
9️⃣

마치며

스트림을 이용하면 복잡한 데이터 처리 질의를 간결하게 표현할 수 있다.
스트림 API를 이용하면 복잡한 데이터 처리 질의를 표현할 수 있다.
filter, distinct, takeWhile, dropWhile, skip, limit 메서드로 스트림을 필터링하거나 슬라이싱할 수 있다.
소스가 정렬되어 있는 사실을 알고 있을 때는 takeWhile이나 dropWhile 메소드를 효과적으로 사용할 수 있다.
map, flatMap 메서드로 스트림의 요소를 추출하거나 변환할 수 있다.
findFirst, findAny 메서드로 스트림의 요소를 검색할 수 있다. allMatch, noneMatch, anyMatch 메서드를 이용해서 주어진 프레디케이트와 일치하는 요소를 스트림에서 검색할 수 있다.
이들 메서드는 short-circuit evaluation, 즉 결과를 찾는 즉시 반환하며 항상 전체 스트림을 처리하지는 않는다.
reduce 메서드로 스트림의 모든 요소를 반복 조합하며 값을 도출할 수 있다.
filter, map 등은 상태를 저장하지 않는 상태없는 연산이다.
reduce 같은 연산은 값을 계산하는 데 필요한 상태를 내부에 저장한다. sorted, distinct 등의 메서드는 새로운 스트림을 반환하기에 앞서 스트림의 모든 요소를 버퍼에 저장해야 한다. 이런 메서드를 상태 있는 연산이라고 한다.
IntStream, DoubleStream, LongStream은 기본형 특화 스트림이다. 이들 연산은 각각의 기본형에 맞게 특화되어있다.
컬렉션뿐 아니라 값, 배열, 파일, iterategenerate 같은 메서드로도 스트림을 만들 수 있다.
무한한 개수의 요소를 가진 스트림을 무한 스트림이라고 한다.