티스토리 뷰

반응형

1. 스트림의 연산(중간연산과 최종연산)에 어떤것들이 있을까?

  • 중간연산 - 연산결과가 스트림인 연산. 0~N번 반복적으로 적용 가능하다.
  • 최종연산 - 연산결과가 스트림이 아닌연산으로 단 한번만 적용 가능하다. 스트림의 요소를 소모한다.

예제로 설명해보자면 아래와 같다.

stream.distinct().limit(5).sorted().forEach(System.out::print);
//     ----------중간연산-----------  -----최종연산 스트림 소모------
  • distinct() 중복제거
  • limit(5) 5개 자르기
  • sorted() 정렬

 

 

그럼 스트림의 중간연산에 대해 알아보자!

 

중간연산 설명
Stream<T> distinct() 중복을 제거
Stream<T> filter(Predicate<T> predicate) 조건에 안맞는 요소 제외
Stream<T> limit(long maxSize) 스트림의 일부를 잘라낸다.
Stream<T> skip(long n) 스트림의 일부를 건너뛴다.
Stream<T> peek(Consumer<T> action) 스트림의 요소에 작업수행 작업 중간에 요소를 확인할 때 사용
Stream<T> sorted() Stream<T> sorted(Comparator<T> comparator) 스트림의 요소를 정렬한다. comparator : 정렬기준
Stream 중간연산의 핵심!
Stream<R> map(Function<T, R> mapper)
IntStream mapToInt(ToIntFunction<T> mapper)
LongStream mapToLong(ToLongFunction<T> mapper)
DoubleStream mapToDouble(ToDoubleFunction<T> mapper)

Stream<R> flatMap(Function<T, Stream<R>> mapper)
IntStream flatMapToInt(Function<T, IntStream> m)
LongStream flatMapToLong(Function<T, LongStream> m)
DoubleStream flatMapToDouble(Function<T, LongStream> m)
스트림의 요소를 변환한다.

 

스트림의 최종연산에 대해 알아보자

최종연산 설명
void forEach(Consumre<? super T> action)
void forEachOrdered(Consumer<? super T> action)
각 요소에 지정된 작업 수행 forEachOrdered은 병렬스트림으로 처리할 경우 작업의 순서를 유지하기위해 사용한다.
long count() 스트림의 요소의 개수 반환
Optional<T> max(Comparator<? super T> comparator)
Optional<T> min(Comparator<? super T> comparator)
스트림의 최대값/최소값을 반환 Comparator은 정렬기준이다.
Optional<T> findAny() //아무거나 하나
Optional<T> findFirst() //첫 번째 요소
스트림의 요소 하나를 반환 findAny는 filter()와 함께 사용된다
Boolean allMatch(Predicate<T> p) // 모두 만족하는지
Boolean anyMatch(Predicate<T> p) //하나라도 만족하는지
Boolean noneMath(Predicate<T> p) // 모두 만족 안하는지
주어진 조건을 모든 요소가 만족 시키는지, 만족시키지 않는지
Object[] toArray()
A[] toArray(IntFunction<A[]> generator)
스트림의 모든 요소를 배열로 반환
Stream 최종연산의 핵심!
Optional<T> reduce(BinaryOperator<T> accumulator)
T reduce(T identity, BinaryOperator<T> accumulator)
U reduce(U identity, BiFunction<U, T, U> accumulator,
                BinaryOperator<U> combiner)
스트림의 요소를 하나씩 줄여가면서(reduce) 계산한다.
R collect(Collector<T, A, R> collector)
R collect(Supplier<R> supplier, BiConsumer<R, T>
accoumulator, BiCunsumer<R, R> combiner)
스트림의 요소를 수집한다. 주로 요소를 그룹화 하거나 분할한 결과를 컬렉션에 담아 반환하는데 사용된다.
  • Optinal<T>은 래퍼클래스로써, T 타입의 값을 하나 감싸고 있는 클래쓰로써, 작업결과를 T객체에 담아서 준다.

 

사용법은 다음시간에 자세히 알아보도록 하겠습니다@@!


참조)

[자바의 정석 - 기초편] ch14-23~25 스트림의 연산

https://www.youtube.com/watch?v=iY8ta9upajE

반응형

'java_basic' 카테고리의 다른 글

Lambda 기초5 최종연산 reduce  (0) 2022.02.16
Lambda 기초4 중간연산2  (0) 2022.02.16
Lambda 기초4 중간연산1  (2) 2022.02.14
Lambda 기초2 (스트림 생성하기)  (0) 2022.02.01
Lambda 기초1  (2) 2022.02.01
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함