Java/배열

[Java]배열을 스트림으로 변환하는 방법(Array to Stream)

DevStory 2022. 9. 2.

배열을 스트림으로 변환하는 방법

이번 포스팅은 Java 버전이 1.8 이상인 경우 Stream API에서 제공하는 몇 가지 클래스와 메서드를 사용하여 배열을 스트림으로 변환하는 몇 가지 방법을 소개합니다.


방법 1. Arrays 클래스의 stream 메서드

첫 번째 방법으로 Arrays 클래스에서 제공하는 stream() 메서드를 사용하여 배열을 스트림으로 변환할 수 있습니다.

 

stream() 메서드는 오버로드된 두 가지 버전이 존재합니다.

public static <T> Stream<T> stream(T[] array);
public static <T> Stream<T> stream(T[] array, int startInclusive, int endExclusive);

첫 번째 stream() 메서드는 배열의 모든 요소를 스트림으로 변환합니다.

두 번째 stream() 메서드는 시작 위치(startInclusive)부터 마지막 위치(endExclusive)에 속한 배열의 요소를 스트림으로 변환합니다.


예제 1. 기본 타입

기본 타입(int, long, double...)의 배열은 Arrays 클래스의 stream() 메서드를 사용하여 스트림으로 변환할 수 없습니다.

 

다음 예제처럼 기본 타입의 배열을 스트림으로 변환하면 컴파일 에러가 발생합니다.

public static void main(String args[]) {
  int[] intArray = {0, 10, 20, 30, 40};
  Stream<int> intStream = Arrays.stream(intArray);
}

[실행 결과]

 

따라서, 배열의 타입이 기본 타입인 경우 래퍼 클래스로 변경해야 합니다.

public static void main(String args[]) {
  Integer[] intArray = {0, 10, 20, 30, 40};
  Stream<Integer> intStream = Arrays.stream(intArray);
}

 

하지만, Java의 버전이 1.8 이상인 경우 java.util.stream 패키지에서 제공하는 다음 세 가지 클래스를 사용하여 기본 타입의 배열을 스트림으로 변환할 수 있습니다.

- IntStream: int 타입의 스트림

- DoubleStream: double 타입의 스트림

- LongStream: ㅣong 타입의 스트림

 

다음 예제는 int 타입의 배열을 IntStream으로 변환합니다.

public static void main(String args[]) {
  int[] intArray = {0, 10, 20, 30, 40};
  IntStream intStream = Arrays.stream(intArray);
}

예제 2. 참조 타입

배열의 데이터 타입이 참조 타입인 경우 Stream 클래스를 사용하며, 타입을 명시합니다.

public static void main(String args[]) {
  String[] strArray = {"One", "Two", "Three"};
  Stream<String> strStream = Arrays.stream(strArray);
}

방법 2. Stream 클래스의 of 메서드

두 번째 방법으로 Stream 클래스에서 제공하는 of() 메서드를 사용하여 배열을 스트림으로 변환할 수 있습니다.

public static<T> Stream<T> of(T t);

예제 1. 기본 타입

만약, 배열의 타입이 int, long, double 타입인 경우 IntStream, LongStream, DoubleStream 클래스에 존재하는 of() 메서드를 사용하여 배열을 스트림으로 변환합니다.

public static void main(String args[]) {
  int[] intArray = {0, 10, 20, 30, 40};
  IntStream intStream = IntStream.of(intArray);
}

 

만약, 기본 타입의 배열을 Stream 클래스의 인스턴스로 변환해야 한다면, Stream의 타입을 기본 타입의 배열로 설정합니다. 참고로 Arrays 클래스의 stream() 메서드는 아래 방법을 사용할 수 없습니다.

public static void main(String args[]) {
  int[] intArray = {0, 10, 20, 30, 40};
  Stream<int[]> intStream = Stream.of(intArray);
}

예제 2. 참조 타입

배열의 데이터 타입이 참조 타입인 경우 Stream 클래스를 사용하며, 타입을 명시합니다.

public static void main(String args[]) {
  String[] strArray = {"One", "Two", "Three"};
  Stream<String> strStream = Stream.of(strArray);
}
반응형

댓글