Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 Iterable을 Stream으로 변환하는 방법

개요

Java에서 IterableStream으로 변환하려면 StreamSupport.stream() 메서드를 활용하면 됩니다. 이 메서드는 Spliterator를 기반으로 순차 또는 병렬 스트림을 손쉽게 생성해 줍니다.

변환 방법

먼저 다음과 같은 Iterable이 있다고 가정해 보겠습니다.

Iterable<String> i = Arrays.asList("K", "L", "M", "N", "O", "P");

이제 커스텀 메서드를 호출하여 스트림을 생성합니다.

Stream<String> s = convertIterable(i);

위 코드에서 사용된 convertIterable()은 직접 정의한 변환 메서드로, 구현 내용은 다음과 같습니다.

public static <T> Stream<T> convertIterable(Iterable<T> iterable) {
    return StreamSupport.stream(iterable.spliterator(), false);
}

StreamSupport.stream()의 두 번째 인자가 false이면 순차 스트림(sequential stream)을, true이면 병렬 스트림(parallel stream)을 생성한다는 점을 기억하세요.

전체 예제 코드

다음은 Java에서 Iterable을 Stream으로 변환하는 전체 프로그램입니다.

import java.util.*;
import java.util.stream.*;
public class Demo {
    public static <T> Stream<T> convertIterable(Iterable<T> iterable) {
        return StreamSupport.stream(iterable.spliterator(), false);
    }
    public static void main(String[] args) {
        Iterable<String> i = Arrays.asList("K", "L", "M", "N", "O", "P");
        Stream<String> s = convertIterable(i);
        System.out.println("Iterable to Stream: "+s.collect(Collectors.toList()));
    }
}

실행 결과

Iterable to Stream: [K, L, M, N, O, P]

핵심 정리

  • Iterablespliterator() 메서드를 호출하여 Spliterator 객체를 얻습니다.
  • StreamSupport.stream(spliterator, parallel)을 호출하여 스트림으로 변환합니다.
  • 두 번째 인자에 false를 전달하면 순차 스트림이 생성됩니다.