Stream

apayaya·2022년 9월 21일
0

Stream

  • Java8 부터 추가
  • Collection에 대해 동작
    • 개별 요소들을 하나씩 참조해서 함수적으로(lambda) 처리
    • 개별 요소들을 읽기만 하고 변경하지 않음
    • 처리 결과를 새로운 컬렉션에 담아 리턴가능
  • 내부 반복자를 사용해 병렬처리 용이

External Interator

  • 직접 코드로 Collection의 요소를 가져와 처리

Internal Interator

  • Collection 내부에서 Iterator를 통해서 요소를 가져와 처리
  • 병렬 처리 가능하도록 구현되어 있음
  • 중간처리와 최종처리 가능
Consumer<String> consumer;

// Exteral Iterator
while(iterator.hasNext()){
	String el = iterator.next();	
    consumer.accept(el);
}

// Interal Interator
stream.forEach(consumer);

메서드

  • 중간 연산(Intermediate Operations) : 최종연산이 호출될때까지 지연
  • 최종 연산: 중간 연산한 결과들 처리(반복, 카운팅, 평균, 합치기)

Stream(Interface)

  • java.util.stream
  • extends AutoCloseable, extends BaseStream<T, Stream<T>>

생성하기

  • collection.stream() -> Stream<T> : From Collection
  • Arrays.stream(T[] arr) -> Stream<T>, Stream.of(T[] arr, int start, int end) : From Array
  • Stream.of(T ... values) -> Stream<T>

static methods

  • Stream.empty() -> Stream : 빈 스트림

methods

Filter

  • filter(Predicate<T>) -> Stream<T>

Map

  • map(Function<T,R>) -> Stream<R>

Flat Map

  • flatMap(Function<T,Stream<R>> mapper) -> Stream<R>

Sorting

  • sorted(Comparator<T>) -> Stream<T>

Else

  • distinct() -> Stream<T> : 중복 제거
  • peek(Consumer<T>) -> Stream<T>
  • limit(long maxSize) -> Stream<T>
  • skip(long n) -> Stream<T>
  • count() -> long : 요소 개수
profile
java 정리

0개의 댓글