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
복사했습니다!