Операции с потоками

Последнее обновление: 23.06.2021

Для работы с потоками в Kotlin для интерфейса Flow определено ряд функций. В зависимости от того, возвращают они конкретное значение или обработанный поток эти функции делятся на два вида: терминальные функции и промежуточные функции. Рассмотрим основные из них.

Терминальные функции потоков

Терминальные функции потоков (terminal operators) представляют suspend-функции, которые позволяют непосредственно получать объекты из потока или возвращают какое-то конечное значение:

  • collect(): получает из потока переданные значения

  • toList(): преобразует поток значений в коллекцию List

  • toSet(): преобразует поток значений в коллекцию Set

  • first() / firstOrNull(): получает первый объект из потока

  • last() / lastOrNull(): получает последний объект из потока

  • single() / singleOrNull(): ожидает получение одного объекта из потока

  • count(): получает количество элементов в потоке

  • reduce(): получает результат определенной операции над элементами потока

  • fold(): получает результат определенной операции над элементами потока, в отличие от функции reduce() принимает начальное значение

Промежуточные функции

Промежуточные функции (Intermediate operator) принимают поток и возвращают обработанный поток.

  • combine(): объединяет два потока в один, после применения к их элементам функции преобразования

  • drop(): исключает из начала потока определенное количество значений и возвращает полученный поток

  • filter(): фильтрует поток, оставляя те элементы, которые соответствуют условию

  • filterNot(): фильтрует поток, оставляя те элементы, которые НЕ соответствуют условию

  • filterNotNull(): фильтрует поток, удаляя все элементы, которые равны null

  • map(): применяет к элементам потока фукцию преобразования

  • onEach(): применяет к элементам потока определенную функцию перед тем, как они будут переданы в возвращаемый поток

  • take(): выбирает из потока определенное количество элементов

  • transform(): применяет к элементам потока функцию преобразования

  • zip(): из двух потоков создает один, применяя к их элементам функцию преобразования

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850