Как Sequence работает в Heap

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

Ответ

Sequence в Kotlin — это ленивая коллекция, которая обрабатывает элементы по одному, не храня их в памяти. В отличие от List, элементы генерируются только при запросе (например, через iterator() или терминальные операции toList(), count()).

Особенности в Heap:

  • Sequence не занимает память под все элементы сразу, что полезно для больших данных.
  • Промежуточные операции (map, filter) не выполняются сразу, а откладываются до вызова терминальной операции.

Пример:

val sequence = sequence {
    yield(1)
    yieldAll(listOf(2, 3))
}

// Терминальная операция — выполняется здесь
println(sequence.toList()) // [1, 2, 3]

Нюансы:

  • Нельзя повторно использовать Sequence после терминальной операции (как и Iterator).
  • Для небольших коллекций List может быть быстрее из-за накладных расходов на ленивость.