만들어진 스트림의 요소를 소모하여 결과를 만들어내는 연산. 최종 연산 후에는 스트림이 닫히게된다. 값은 단일 값, 배열, 컬렉션이 될 수 있다.
.forEach(System.out::println);
대부분 기본형 스트림으로 변환하거나, reduce(), collect()를 사용해 통계 정보를 얻는다.
스트림의 요소를 줄여나가면서 연산을 수행하고 최종 결과를 반환. 처음 두 요소를 가지고 연산한 결과를 사용해 다음 요소와 연산한다. 초기값을 주는 경우는 초기값과 스트림의 첫 번째 요소로 연산을 시작하고, 연산한 결과를 사용해 다음 요소와 연산한다.
스트림의 요소를 수집하는 연산. 매개변수로 Collector(컬렉터)를 사용해 스트림의 요소를 수집한다. 컬렉터는 어떻게 수집할 것인가에 대한 방법이다.
Collectors.메서드이름()
으로 사용
스트림의 모든 요소를 컬렉션이나 배열로 변환한다.
Collectors.toCollection(ArrayList::new)
문자열 스트림의 모든 요소를 하나의 문자열로 연결한다. 구분자를 줄 수도 있고, 접두사나 접미사도 지정할 수 있다. 스트림 요소가 문자열이 아닌경우 map을 사용하여 문자열로 만든 후 사용할 수 있다.
스트림의 요소를 특정 기준으로 그룹화하는 것. 결과는 Map에 담겨 반환됨.
Map<Integer, List<Student>> studentByClass = studentStream.collect(Collectors.grounpingBy(Student::getClass));
스트림의 요소를 특정 조건에 일치하는 그룹과 일치하지 않는 2가지의 그룹으로 분할한다. 결과는 Map에 담겨 반환됨.
Map<Boolean, List<Student>> studentBySex = studentStream.collect(Collectors.partitioningBy(Student::isMale));
List<Student> male = studentBySex.get(true);
List<Student> female = studentBySex.get(false);