스트림

hellok99·2023년 4월 10일
0

✅ 스트림


자바 8부터 도입된 문법으로 배열 및 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리 할 수 있도록 하는 반복자입니다.


✅ 스트림의 특징

  1. 스트림의 처리 과정은 생성, 중간연산, 최종연산 세 단계의 파이프 라인으로 구성
  2. 스트림은 원본 데이터 소스를 변경하지 않음 (READ - ONLY)
  3. 스트림은 일회용이다. (ONETIME-ONLY)
  4. 스트림은 내부반복자이다.

✅ 배열 스트림 생성

  • Arrays.stream()
  • Stream.of()

ex)

String[] arr = new String[]{"안녕","하세요","반갑","습니다"};

Stream<String> stream1 = Arrays.stream(arr);

Stream<String> stream2 = Stream.of(arr);

✅ 컬렉션 스트림 생성

  • stream()

ex)

List<Integer> list = Arrays.asList(1,2,3,4);

Stream<Integer> stream = list.stream();

✅ 임의의 수 스트림 생성

IntStream ints = new Random().ints();

//생성범위 10개로 제한
IntStream ints = new Randoms().int().limit(10);

//특정 범위의 정수
IntStream intStream = IntStream.rangeClosed(1,10);
  • rangeClosed(1, 11) = 1 ~ 11
  • range(1 , 11) = 1~ 10

✅ filter(), distinct()

  • filter() : Stream에서 조건에 맞는 데이터 만을 정제하여 더 작은 컬렉션 생성, 조건이 참이 되는 요소만 필터링 한다.

  • distinct() : Stream의 요소들에서 중복된 데이터가 존재하는 경우 중복된 요소를 제거

✅ map()

  • 스트림내 요소들에서 원하는 필드만 추출하거나 특정형태로 변환할때 사용하는 중간 연산자

✅ sorted()

  • 정렬할 때 사용하는 중간 연산자

✅ sum(), count(), average(), max(), min()

  • sum() = 합계
  • count() = 개수
  • average() = 평균
  • max() = 최대값
  • min() = 최소값
  • average() 최종 연산자가 반환하는 값의 타입이 OptionalDouble, 즉 래퍼클래스 객체로 되어 있기 때문에 우리가 원하는 기본형으로 변환하는 과정이 한번 더 필요하다.
    getAsDouble(), getAsInt()는 객체로 반환되는 값을 다시 기본형으로 변환하기 위해 사용되는 메서드로 스트림 파이프라인과는 관계가 없다.

✅ allMatch(), anyMatch(), noneMatch()

  🔸 allMatch() = 모든 요소가 조건을 만족하는지 여부를 판단
  🔸 noneMatch() = 모든 요소가 조건을 만족하지 않는지 여부를 판단
  🔸 anyMatch() = 하나라도 조건을 만족하는 요소가 있는지 여부를 판단


✅ reduce()

  • 스트림의요소를 줄여나가면서 연산을 수행하고 최종적인 결과를 반환한다.

✅ collect()

  • 요소들을 수집하는 최종처리 메서드이다.
  • 요소 그룹핑 및 분할 등 다른 기능들을 제공한다.
profile
안녕하세요

0개의 댓글