На этом шаге мы рассмотрим интерфейсы IntStream, LongStream, DoubleStream
Ранее мы рассматривали интерфейс Stream, который служит для упрощения обработки потока данных. Но часто есть необходимость обрабатывать потоки целочисленных или вещественных чисел. Для этой цели были написаны интерфейсы IntStream, LongStream и DoubleStream для работы со значениями типа int, long и double соответственно. Данные интерфейсы содержат все функции что и интерфейс Stream. Но также содержат ряд функций, которые могут быть применимы только числам. В данном шаге мы рассмотрим только такие функции.
Начнем с того как можно получить необходимый поток. В интерфейсе Stream есть следующие функции:
IntStream mapToInt(ToIntFunction<? super T> mapper) LongStream mapToLong(ToLongFunction<? super T> mapper) DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper)
Функция mapToInt служит для преобразования элементов из обычного потока в IntStream. Правило преобразования задается в виде функции, которая передается в качестве аргумента. Данная функция преобразует элемент в значение int, mapToLong - пребразует элемент в значение long, а mapToDouble - в значение double. Аналогичные функции содержатся в интерфейсах IntStream, LongStream и DoubleStream.
Также есть еще один способ получения необходимого потока. В данных интерфейсах содержатся следующие функции:
LongStream asLongStream() // Содержится только в интерфейсе IntStream DoubleStream asDoubleStream() // Содержится только в интерфейсе IntStream и LongStream
Функция asLongStream()