Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpFwCo 190 of 299 menu
◀ ▶

Поток из коллекции в Kotlin

Данные часто уже лежат в List или другой коллекции. Расширение asFlow оборачивает её в Flow: элементы отдаются по одному в том же порядке, что при обходе коллекции.

Список строк становится потоком без ручного emit в цикле:

import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.runBlocking fun main() { runBlocking { val palette = listOf("cyan", "magenta", "yellow") palette.asFlow().collect { hue -> println(hue) } } }

Три названия цвета идут подряд. Функция asFlow не копирует коллекцию ради нового типа - лишь меняет способ чтения на последовательный сбор.

После обёртки доступны те же операторы, что у flowOf:

import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.filter import kotlinx.coroutines.runBlocking fun main() { runBlocking { val ids = listOf(4, 7, 10, 13) ids.asFlow() .filter { id -> id > 6 } .collect { id -> println(id) } } }

Печатаются 7, 10 и 13. Исходный список при этом не меняется.

Дан список "mon", "tue", "wed". Превратите его в поток через asFlow и выведите все дни.

Список чисел 2, 5, 8, 11 соберите как поток, удвойте каждый элемент через map и напечатайте результат.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить