스트림 -> 기본형 스트림
// Stream<T> -> IntStream
mapToInt(ToIntFunction<T> mapper)
// Stream<T> -> LongStream
mapToLong(ToLongFunction<T> mapper)
// Stream<T> -> DoubleStream
mapToDouble(ToDoubleFunction<T> mapper)
기본형 스트림 -> 스트림
// IntStream -> Stream<Integer>
// LongStream -> Stream<Long>
// DoubleStream -> Stream<Double>
boxed()
// IntStream/LongStream/DoubleStream -> Stream<U>
mapToObj(DoubleFunction<U> mapper)
기본형 스트림 -> 기본형 스트림
// IntStream -> LongStream
asLongStream()
// IntStream -> DoubleStream
asDoubleStream()
스트림 -> 부분 스트림
// Stream<T> -> Stream<T>
// IntStream -> 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<T>
// IntStream <-> IntStream
// LongStream <-> LongStream
// DoubleStream <-> DoubleStream
parallel() // 스트림 -> 병렬 스트림
sequential() // 병렬 스트림 -> 스트림
스트림 -> 컬렉션
// Stream<T>/IntStream/LongStream/DoubleStream -> Collection<T>
collect(Collectors.toCollection(Supplier factory)
// Stream<T>/IntStream/LongStream/DoubleStream -> List<T>
collect(Collectors.toList())
// Stream<T>/IntStream/LongStream/DoubleStream -> Set<T>
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 merge))
collect(Collectors.toMap(Function k, Function v, BinaryOperator merge, Supplier mapSupplier))
스트림 -> 배열
// Stream<T> -> Object[]
toArray()
// Stream<T> -> T[]
toArray(IntFunction<A[]> generator)
// IntStream -> int[]
// LongStream -> long[]
// DoubleStream -> double[]
toArray()