JAVA/자바의 정석

[자바의 정석 - 기초편] 14. (3) 스트림 특징, 스트림 만들기 ( 컬렉션 / 배열 / 임의의 수 / 특정 범위의 정수 / 람다식 / 파일과 빈 스트림 )

서영22 2024. 1. 3. 02:18

 스트림 (Stream) 

- 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것

1. 스트림 만들기
2. 중간 연산 (0~n번) : 연산결과가 스트림 O
3. 최종 연산 (1번) : 연산결과가 스트림 X

 

 

 

 

 

 스트림의 특징 

- 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐, 변경하지 않음 (Read Only)

 

- 스트림은 Iterator처럼 일회용임 (필요하면 다시 스트림 생성해야 함)

 

- 최종 연산 전까지 중간 연산이 수행되지 않음 (지연된 연산)

 

- 스트림은 작업을 내부 반복으로 처리함

 

- 스트림의 작업을 병렬로 처리 - 병렬 스트림

 

- 기본형 스트림 : IntStream, LongStream, DoubleStream

     > 오토박싱 & 언박싱의 비효율이 제거됨 (Stream<Integer>대신 IntStream 사용)

     > 숫자와 관련된 유용한 메서드를 Stream<T>보다 더 많이 제공

 

 

 

 스트림 만들기 - 컬렉션 

- Collection 인터페이스의 stream()으로 컬렉션을 스트림으로 변환

Stream<E> stream()   // Collection 인터페이스의 메서드

 

 

 

 

 스트림 만들기 - 배열 

- 객체 배열로부터 스트림 생성하기

 

 

 

 

- 기본형 배열로부터 스트림 생성하기

 

 

 

 

 스트림 만들기 - 임의의 수 

- 난수를 요소로 갖는 스트림 생성하기

 

 

 

 

 스트림 만들기 - 특정 범위의 정수 

- 특정 범위의 정수를 요소로 갖는 스트림 생성하기 (IntStream, LongStream)

 

 

 

 

 스트림 만들기 - 람다식 iterate(), generate() 

- 람다식을 소스로 하는 스트림 생성하기

 

 

 

- iterate()는 이전 요소를 seed로 해서 다음 요소를 계산함

 

 

 

 

- generate()는 seed를 사용하지 않음

 

 

 

 

 스트림 만들기 - 파일과 빈 스트림

- 파일을 소스로 하는 스트림 생성하기

 

 

 

 

- 비어있는 스트림 생성하기