В чем разница между коллекцией и последовательностью

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

Ответ

Коллекция (например, List, Set) хранит все элементы в памяти и выполняет операции немедленно (eager evaluation). Например, list.map { it * 2 } сразу создает новый список.

Последовательность (Sequence) обрабатывает элементы лениво (lazy evaluation), выполняя операции только при необходимости (например, при вызове toList() или forEach). Это экономит память для больших данных. Пример:

val seq = sequenceOf(1, 2, 3).map { it * 2 } // Ничего не вычисляется
println(seq.toList()) // [2, 4, 6] - вычисление здесь

Ключевые отличия:

  1. Вычисления: коллекции — eager, последовательности — lazy.
  2. Память: последовательности не хранят промежуточные результаты.
  3. Порядок операций: у коллекций каждая операция проходит по всем элементам, у последовательностей — поэлементно (например, mapfilter выполняется для каждого элемента по очереди).