Ответ
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 может быть быстрее из-за накладных расходов на ленивость.