: 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 값 요소
컬렉션과 비슷하게 요소 형식으로 이루어진 연속된 값이다.
int sum = 0;
int count = 0;
for (Employee emp : emps) {
if (emp.getSalary() > 100_000_000) {
sum += emp.getSalary();
count++;
}
}
double average = (double) sum / count;double average = emps.stream()
.filter(emp -> emp.getSalary() > 100_000_000)
.mapToInt(Employee::getSalary)
.average()
.orElse(0);불필요한 연산 줄임
쇼트 서킷: 여러개의 조건이 중첩된 경우 값이 결정나면 불필요한 연산은 진행하지 않고 조건문을 나와 실행속도를 높인다.
스트림 생성(강을 만들어)
stream()
중간 연산(할일을 해)
filter(), map()
최종 연산(이제 강에서 모아)
collect()
파이프라이닝
- 연산의 해당 부분을 .으로 이어 사용함

flatMap의 예시
animal = ["cat","dog"]을 results = [ "c", "a", "t", "d", "o", "g" ]로 바꾸고 싶은 경우
List<String> results = animals.stream().map(animal -> animal.split(""))
.flatMap(Arrays::stream)
.collect(Collectors.toList());
스트림을 통해 각 요소(”cat”, “dog”)에 대해 split(””)실행
⇒ [ [ "c", "a", "t" ] , [ "d", "o", "g" ] ]
이렇게 얻은 결과를 flatMap을 통해 1차원으로 변경
collect를 통해 결과 모으기