Stream выражения

Содержание

Слайд 2

Рассматриваемые вопросы

Понятие Stream
Иерархия интрефейсов и методы Stream
Как получить Stream
Операции со Stream
Примеры

Рассматриваемые вопросы Понятие Stream Иерархия интрефейсов и методы Stream Как получить Stream Операции со Stream Примеры

Слайд 3

Понятие Stream

Stream API — API для работы со структурами данных в функциональном

Понятие Stream Stream API — API для работы со структурами данных в
стиле.
Stream API — это по своей сути поток данных. Сам термин "поток" довольно размыт в программировании в целом и в Java в частности.
Stream API позволяет писать существенно короче то, что раньше занимало много строк кода, а именно — упростить работу с наборами данных, например, операции фильтрации, сортировки и другие манипуляции с данными.

Слайд 4

Понятие Stream

“Трубопровод” для обработки данных
Содержит последовательность объектов
Работает с источниками данных: массивы и

Понятие Stream “Трубопровод” для обработки данных Содержит последовательность объектов Работает с источниками
коллеции
Не хранит данные в себе
Это не InputSream/OutputStream!

Слайд 5

BaseStream

В основе Stream API лежит интерфейс BaseStream. Его полное определение:
Здесь параметр T

BaseStream В основе Stream API лежит интерфейс BaseStream. Его полное определение: Здесь
означает тип данных в потоке, а S - тип потока, который наследуется от интерфейса BaseStream.
BaseStream определяет базовый функционал для работы с потоками, которые реализуется через его методы:
void close(): закрывает поток
boolean isParallel(): возвращает true, если поток является параллельным
Iterator<Т> iterator(): возвращает ссылку на итератор потока
S parallel(): возвращает параллельный поток (параллельные потоки могут задействовать несколько ядер процессора в многоядерных архитектурах)
S sequential(): возвращает последовательный поток
S unordered(): возвращает неупорядоченный поток

interface BaseStream>

Слайд 6

Иерархия стримов

При работе с потоками, которые представляют определенный примитивный тип - double,

Иерархия стримов При работе с потоками, которые представляют определенный примитивный тип -
int, long проще использовать интерфейсы DoubleStream, IntStream, LongStream.
Но в большинстве случаев, как правило, работа происходит с более сложными данными, для которых предназначен интерфейс Stream.

Слайд 7

Stream API

Несмотря на то, что все эти операции позволяют взаимодействовать с потоком

Stream API Несмотря на то, что все эти операции позволяют взаимодействовать с
как неким набором данных наподобие коллекции, важно понимать отличие коллекций от потоков:
Потоки не хранят элементы. Элементы, используемые в потоках, могут храниться в коллекции, либо при необходимости могут быть напрямую сгенерированы.
Операции с потоками не изменяют источника данных. Операции с потоками лишь возвращают новый поток с результатами этих операций.
Для потоков характерно отложенное выполнение. То есть выполнение всех операций с потоком происходит лишь тогда, когда выполняется терминальная операция и возвращается конкретный результат, а не новый поток.

Слайд 8

Способы создания стримов

Способы создания стримов

Слайд 9

Операции со Stream

Операции (методы) Stream можно разделить на две группы:
1. промежуточные (intermediate)

Операции со Stream Операции (методы) Stream можно разделить на две группы: 1.
– производят другую Stream и используются для создания цепочки действий над объектами
2. заключительные (terminal) – побуждают к выполнению промежуточных операция и производят конечный результат обработки объектов

Слайд 10

Особенности Stream

1. Обработка не начнётся до тех пор, пока не будет вызван

Особенности Stream 1. Обработка не начнётся до тех пор, пока не будет
терминальный оператор.
list.stream().filter(x -> x > 100);
не возьмёт ни единого элемента из списка
2. Стрим после обработки нельзя переиспользовать.
Stream stream = list.stream();
stream.forEach(System.out::println);
stream.filter(s -> s.contains("Stream API"));
stream.forEach(System.out::println);

Слайд 11

Операции со Stream

Операции со Stream

Слайд 12

Пример работы со Stream

При работа со Stream довольно часто используются lambda выражения

Пример работы со Stream При работа со Stream довольно часто используются lambda
и ссылки на методы:
public static void main(String[] args) { long count = Stream .generate(() -> new Random().nextInt(255)) .limit(100) .filter(intValue -> intValue != 0) .map(intValue -> (char) intValue.intValue()) .peek(System.out::print) .count(); //завершающая операция System.out.println(count); }
Имя файла: Stream-выражения.pptx
Количество просмотров: 80
Количество скачиваний: 0