반응형
중간 처리와 최종 처리
스트림
은 데이터의 필터링, 매핑, 정렬, 그룹핑 등의 중간처리
와
합계, 평균, 카운팅, 최대값, 최소값 등의 최종 처리
를 파이프라인(pipelines)으로 해결한다.
스트림 = 중간처리 + 최종처리 로 구성
파이프라인 => 여러 개의 스트림이 연결되어 있는 구조를 말함
중간 스트림이 생성될 때 바로 요소들이 중간 처리되는 것이아니라, 최종 처리가 설정(시작)되기 전까지 중간처리는 지연된다. 최종처리가 시작되면 비로소 컬렉션 요소가 하나씩 중간 스트림에서 처리되고 최종 처리까지 오게된다.
public static void main(String[] args){
List<Member> list = Arrays.asList(
new Member("깡냉", Member.MALE, 30),
new Member("여자깡냉", Member.FEMALE, 20),
new Member("까랭", Member.MALE, 34),
new Member("여자까랭", Member.FEMALE, 25)
);
double ageAvg = list.stream() // 오리지날 스트림
.filter(m -> m.getSex() == Member.MALE) // 중간 처리 스트림
.mapToInt(Member :: getAge) // 중간 처리 스트림
.average() // 최종 스트림
.getAsDouble();
// 위의 코드는 사실 아래와 같다.
// Stream<Member> maleFemaleStream = list.stream();
// Stream<Member> maleStream = maleFemaleStream.filter(m -> m.getSex() == Member.MALE);
// IntStream ageStream = maleStream.mapToInt(Member::getAge);
// OptionalDouble optionalDouble = ageStream.average();
// double ageAvg = optionalDouble.getAsDouble();
System.out.println("남자 평균 나이 : " + ageAvg);
}
중간 처리 메소드와 최종 처리 메소드
[출처 : 이것이 자바다]
반응형
'프로그래밍 노트 > JAVA' 카테고리의 다른 글
[JAVA] Stream 매핑(flatMapXXX(), mapXXX(), asXXXStream(), boxed()) (0) | 2019.06.17 |
---|---|
[JAVA] Stream의 필터링(distinct(), filter()) (0) | 2019.06.17 |
[JAVA] 스트림(Stream)의 종류 (0) | 2019.06.17 |
[JAVA] Stream API 소개 (0) | 2019.06.17 |
[JAVA] String 객체와 리터럴 (메모리관련) (2) | 2019.04.23 |