В каком порядке данные выходят в результате zip двух потоков

«В каком порядке данные выходят в результате zip двух потоков» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Данные выходят попарно, объединяя элементы с одинаковыми позициями из каждого потока. Если один поток завершается раньше, оставшиеся элементы другого игнорируются.

val flow1 = flowOf(1, 2, 3)
val flow2 = flowOf("A", "B", "C", "D")

flow1.zip(flow2) { num, letter -> "$num$letter" }
    .collect { println(it) }
// Вывод: 1A, 2B, 3C
// D не выводится, так как flow1 завершился