728x90
반응형
Stream 생성 방법 예제
// Stream의 static 메서드 of 사용 - Stream.of(data)
Stream<String> stream = Stream.of("Java", "Lambdas", "Stream", "Example");
// Stream의 static 메서드 iterate 사용 - Stream.iterate(seed, operator)
Stream.iterate(0, n -> n + 2)
.limit(10)
.forEach(System.out::println);
// Stream의 static 메서드 generate 사용 - Stream.generate(() -> T)
Stream.generate(Math::random)
.limit(10)
.forEach(System.out::println);
//Arrays static 메서드 stream 사용 - Arrays.stream(Array[])
int[] numbers = {2, 3, 5, 7, 11};
int sum = Arrays.stream(numbers).sum();
스트림의 연산 (중간연산/최종연산)
✔️ 단말 연산을 스트림 파이프 라인에 실행하기 전까지는 아무 연산도 수행하지 않음(Lazy)
✔️ 모든 중간 연산을 합친 다음 최종연산에서 한번에 처리
✔️ filter, map, limit는 서로 연결되어 파이프 라인을 형성
✔️ collect로 마지막 파이프 라인을 수행 후 완료
Stream이 제공하는 중간 처리용 메서드 - 리턴 타입이 스트림
종류 | 리턴 타입 | 메소드(매개 변수) | 소속된 인터페이스 | |
중간 처리 | 필터링 | Stream IntStream LongStream DoubleStream |
distinct() | 공통 |
filtre(...) | 공통 | |||
매핑 | flatMap(...) | 공통 | ||
flatMapToDouble(...) | Stream | |||
flatMapToInt(...) | Stream | |||
flatMapToLong(...) | Stream | |||
map(...) | 공통 | |||
mapToDouble(...) | Stream, IntStream, LongStream | |||
mapToInt(...) | Stream, longStream, DoubleStream | |||
mapToLong(...) | Stream, IntStream, DoubleStream | |||
mapToObj(...) | IntStream, LongStream, DoubleStream | |||
asDoubleStream() | IntStream, LongStream | |||
asLongStream() | IntStream | |||
boxed() | IntStream, LongStream, DoubleStream | |||
정렬 | sorted(...) | 공통 | ||
루핑 | peek(...) | 공통 |
Stream이 제공하는 최종 처리용 메서드 - 리턴 타입이 기본타입이거나 Optional
종류 | 리턴 타입 | 메소드(매개 변수) | 소속된 인터페이스 | |
최종 처리 | 매칭 | boolean | allMatch(...) | 공통 |
boolean | anyMatch(...) | 공통 | ||
boolean | noneMatch(...) | 공통 | ||
집계 | long | count() | 공통 | |
OptionalXXX | findFirst() | 공통 | ||
OptionalXXX | max(...) | 공통 | ||
OptionalXXX | min(...) | 공통 | ||
OptionalDouble | average() | IntSTream, LongStream, DoubleStream | ||
OptionalXXX | reduce(...) | 공통 | ||
int, long, double | sum() | IntStream, LongStream, DoubleStream | ||
루핑 | void | forEach(...) | 공통 | |
수집 | R | collect(...) | 공통 |
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 날짜와 시간 API (Joda-Time) (0) | 2022.03.24 |
---|---|
[Java] Stream 예제 (0) | 2022.03.23 |
[Java] Collection과 Stream 비교 (0) | 2022.03.21 |
[Java] 스트림(Stream)의 특징 (0) | 2022.03.18 |
[Java] 스트림(Stream)이란 ? (0) | 2022.03.16 |