스트림으로 프로그램을 작성할때 어려움은
스트림간의 변환, 그리고 언제어떤 메서드를 써야하는지 매번 찾아보는것이다.
표로 간단히 정리하여 앞으로 스트림 - 스트림간의 변환에 관련된 이슈때 유용하도록 하자.
from | to | 변환메서드 |
스트림 → 기본형 스트림 | ||
Stream<T> | IntStream LongStream DoubleStream |
mapToInt(ToIntFunction<T> mapper) mapToLong(ToLongFunction<T> mapper) mapToDouble(ToDoubleFunction<T> mapper) |
기본형 스트림 → 스트림 | ||
IntStream LongStream DoubleStream |
Stream<Integer> Stream<Long> Stream<Double> |
boxed() |
Stream<U> | mapToObj(DoubleFunction<U> mapper) | |
기본형 스트림 → 기본형스트림 | ||
IntStream LongStream DoubleStream |
LongStream DoubleStream |
asLongStream() asDoubleStream() |
스트림 → 부분스트림 | ||
Stream<T> IntStream |
Stream<T> IntStream |
skip(long n) limit(long maxSize) |
두개의 스트림 → 스트림 | ||
Stream<T>, Stream<T> | Stream<T> | concat(Stream<T> a, Stream<T> b) |
IntStream, IntStream | IntStream | concat(IntStream a, IntStream b) |
LongStream, LongStream | LongStream | concat(LongStream a, LongStream b) |
DoubleStream, DoubleStream | DoubleStream | concat(DoubleStream a, DoubleStream b) |
스트림<스트림> → 스트림 | ||
Stream<Stream<T>> | Stream<T> | flatMap(Function mapper) |
Stream<IntStream> | IntStream | flatMapToInt(Function mapper) |
Stream<LongStream> | LongStream | flatMapToLong(Function mapper) |
Stream<DoubleStream> | DoubleStream | flatMapToDouble(Function mapper) |
스트림 ↔ 병렬스트림 | ||
Stream<T> Stream<IntStream> Stream<LongStream> Stream<DoubleStream> |
Stream<T> IntStream LongStream DoubleStream |
parallel() 스트림 → 병렬스트림 sequential() 병렬스트림 → 스트림 |
스트림 → 컬렉션 | ||
Stream<T> IntStream LongStream DoubleStream |
Collection<T> | collect(Collectors.toCollection(Supplier factory)) |
List | collect(Collectors.toList()) | |
Set | collect(Collectors.toSet()) | |
컬렉션 → 스트림 | ||
Collection<T>, List<T>, Set<T> | Stream<T> | stream() |
스트림 → Map | ||
Stream<T> IntStream LongStream DoubleStream |
Map<K,V> | collect(Collectors.toMap(Function key, Function value)) collect(Collectors.toMap(Function k, Function v, BinaryOperator)) collect(Collectors.toMap(Function k, Function v, BinaryOperator merge, Sypplier mapSupplier)) |
스트림 → 배열 | ||
Stream<T> | Object[] | toArray() |
T[] | toArray(IntFunction<A[]> generator) | |
IntStream LongStream DoubleStream |
int[] long[] double[] |
toArray() |