JAVA4_06_스트림

charl hi·2021년 10월 8일
0

JAVA4

목록 보기
6/13

스트림 Stream

  • 다양한 데이터 소스(컬렉션, 배열)를 표준화된 방법으로 다루기 위한 것
  • 데이터의 흐름

  • ✨✨①스트림 만들기 -> ②중간 연산(0~n번) -> ③최종 연산(0~1번) -> 결과

  • Stream<T> Collection.stream()
    • Collection 인터페이스의 메소드
    • ✨해당 컬렉션을 스트림으로 변환

중간 연산과 최종 연산

중간 연산

  • 연산결과가 스트림인 연산
  • 반복적으로 적용 가능

최종 연산

  • 연산결과가 스트림이 아닌 연산
  • 한번만 적용 가능 <- 스트림의 요소를 소모

예)



스트림의 특징

링크텍스트

1. Read Only

  • 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다.

2. 일회용

  • 스트림은 Iterator처럼 일회용이다.
  • 필요하면 다시 스트림을 생성해야 한다.

3. 지연된 연산

  • 최종 연산 전까지 중간연산이 수행되지 않는다.

4. 내부 반복 처리

  • 스트림은 작업을 내부 반복으로 처리한다.

이전엔)

for(String str : strList)
	System.out.println(str);

->✨✨

stream.forEach(System.out::println);

5. 병렬스트림

  • 멀티쓰레드로 스트림의 작업을 병렬로 처리한다.

  • 빅데이터 작업을 위해 함수형 프로그래밍이 인기가 많아졌는데, 이 때문에 여러 쓰레드가 병렬로 처리하는 게(빠르니까) 유리해졌다.

  • parallel() : 병렬 스트림으로 전환(속성만 변경)

  • sequential() : 직렬? 스트림으로, 반대로 전환. 디폴트

6. 기본형 스트림 - IntStream, LongStream, ...

  • 오토박싱&언박싱의 비효율이 제거됨
  • Stream<Integer> 대신 IntStream 사용
  • 숫자와 관련된 유용한 메소드를 Stream<T>보다 더 많이 제공한다.
    • Stream<T> : 뭐가 올지 모르는 전체 타입을 받기에, 숫자 관련 메소드가 적다.
      • count() 정도?
    • IntStream, ... : count(), sum(), average(), ...



Ref

0개의 댓글