내로그
Java Stream(스트림) 파이프라인 본문
스트림 파이프라인
- 리덕션(Reduction)
대량의 데이터를 가공해서 축소하는 것을 말한다.
ex) 합계, 평균값, 카운팅, 최대값, 최소값 등
요소가 리덕션의 결과물로 바로 처리 할 수 없을 경우 중간 처리가 필요하다.
중간처리: 필터링, 매핑, 정렬, 그룹핑
중간 처리한 요소를 최종 처리해서 리덕션 결과물을 산출한다.
- 스트림은 중간 처리와 최종 처리를 파이프라인으로 해결한다.
파이프라인? 스트림을 파이프처럼 이어 놓은것
중간 처리 메소드는 중간 처리된 스트림을 리턴하고
이 스트림에서 다시 중간 처리 메소드를 호출해서 파이프라인을 형성하게 된다.
최종 스트림의 집계 기능이 시작되기 전까지 중간처리는 지연(Lazy) 된다
중간 처리와 최종 처리
중간 처리: 요소들의 매핑, 필터링, 정렬
최종 처리: 반복, 카운트,평균,총합
public class StreamPipelineTest {
public static void main(String[] args){
List<Student> studentList = Arrays.asList(
new Student("김씨","남자", 90),
new Student("서씨","여자", 100),
new Student("김씨2","남자", 90),
new Student("서씨2","여자", 100),
new Student("김씨3","남자", 90),
new Student("서씨3","여자", 100)
);
double avg = studentList.stream()
.filter(student -> "남자".equals(student.getGender()))
.mapToInt(Student::getScore)
.average()
.getAsDouble();
System.out.println(avg);
}
}
원본스트림은 학생들의 이름,성별,점수가 있는 List로 만든 스트림이다.
이 원본 스트림에서 성별이 남자인 학생들만 있는 스트림이 되도록 중간 처리를 한다
filter() 로 성별이 남자인 학생들만 남도록 중간 처리를 한 후
mapToInt() 로 남학생의 점수만 있는 IntStream을 만든다.
그 후 최종 처리로 남학생들의 평균점수를 구한다.
'WEB > Java' 카테고리의 다른 글
Java Stream(스트림) 중간처리, 최종처리 메소드 (0) | 2022.08.25 |
---|---|
Java Stream(스트림) (0) | 2022.08.24 |
람다식(Lambda) (0) | 2022.08.23 |