개발/JAVA

JAVA - Stream API (1) (스트림 생성 방법)

잇(IT) 2023. 6. 8. 11:19
728x90

- 스트림 종류

1. BaseStream

   1. Stream<T>

   2. DoubleStream

   3. IntStream

   4. LongStream

 

- 스트림 생성 방법

1. 컬렉션 : 컬렉션으로부터 스트림을 생성하면 java.util.Collection의 stream() 메서드를 사용한다.

default Stream<E> stream()
// 순차 스트림

default Stream<E> paralleStream()
// 병렬 처리 스트림
ArrayList<Integer> myList = new ArrayList<>();
myList.add(10);
myList.add(20);
myList.add(30);
myList.add(40);
myList.add(50);
Stream<Integer> myStream = myList.stream();

 

2. 배열 : 배열로부터 스트림을 생성하려면 java.util.Arrays의 stream() 메서드를 사용한다.

static <T> Stream<T> stream(T[] array)

 

- Arrays의 stream() 메서드를 사용하여 스트림을 생성하는 예

String[] str = {"one", "two", "three"};
Stream<String> myStream = Arrays.stream(str);

 

- 다음은 Arrays에 오버로딩된 stream() 메서드들이다. 기본 타입 스트림을 생성할 때 사용한다.

static DoubleStream stream(double[] array)
static IntStream stream(int[] array)
static LongStream stream(long[] array)

 - 사용 예

int[] score = {50, 10, 60, 30, 40}

 

- 기본 타입 스트림을 생성할 때 java.util.stream의 기본 타입 스트림(IntStream, DoubleStream, LongStream)에서 제공하는 of() 메서드를 사용할 수도 있다.

DoubleStream DoubleStream.of(double[] array)
IntStream IntStream.of(int[] array)
LongStream LongStream.of(long[] array)

 

3. 범위

- 스트림을 생성할 때 데이터 소스로 배열과 컬렉션 말고 범위를 지정할 수도 있다. 데이터 소스로 범위를 사용할 때는 정수값만 가능하며 IntStream과 DoubleStream의 range() 또는 rangeClosed() 메서드를 사용한다.

IntStream IntStream.range(int, int)
IntStream IntStream.rangeClosed(int, int)
LongStream LongStream.range(int, int)
LongStream LongStream.rangeClosed(int, int)

- range(1, 10)과 같이 지정했다면 1부터 10 사이의 1씩 증가된 정수값이 데이터 소스이다.

- range()와 rangeClosed() 메서드의 차이점은 마지막 값의 포함 여부이다.

 

- 사용 예

IntStream myStream = IntStream.rangeClosed(1, 10);
728x90

'개발 > JAVA' 카테고리의 다른 글

Java - 람다 (기본, 함수형 인터페이스 API)  (0) 2023.08.31
JAVA - 열거형  (0) 2023.06.07
JAVA - Optional  (0) 2023.06.05
JAVA - Reflection API  (0) 2023.06.01
JAVA - 람다 (기본)  (0) 2023.05.18