Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

내로그

Java Stream(스트림) 파이프라인 본문

WEB/Java

Java Stream(스트림) 파이프라인

Kotato 2022. 8. 24. 18:30

스트림 파이프라인

- 리덕션(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