TGViewer
Android Live 🤖 Android Live 🤖 @android_live · 5.13K subscribers
Post #362 3.87K
​​Collections vs Sequences
#разработка #статьи

В Kotlin существует две сущности, которые позволяют выполнять операции на последовательности элементов: Collections и Sequences . И они значительно отличаются тем, как выполняют работу под капотом.

Начнём с того, что они по-разному работают над элементами.
В коллекциях операторы применяются для всей входящей цепочки объектов. То есть во время обработки создаётся новый, промежуточный список объектов, к элементам которого применяется оператор.
В последовательностях вся цепочка операторов применяется для каждого из элементов.
Можно сказать, что последовательности — это бесконечная сущность, а коллекции — конечная.

Когда же применять каждый из них?

1) Большое число операторов в цепочке. Например, мы хотим применить цепочку из операторов filter(), map() и take(). Из-за особенности работы коллекций, описанной выше, тут явно побеждают последовательности, так как на каждом из этапов не будет создаваться новый промежуточный список. Особое преимущество будет при наличии оператора take(), так как обработается только 5 элементов из последовательности.

2) То же самое и для операторов contains(), indexOf(), any(), none(), find(). Во всех них нужно найти только первый элемент, и нет смысла работать со всей цепочкой.

3) Когда же у вас есть оператор toList(), toSet(), то тут побеждают коллекции, так как возвращаемый список будет создан только один раз.

4) При наличии оператора sorted() или distinct() также стоит использовать коллекции. Последовательность, из-за особенности работы под капотом, создаст промежуточный список.

Также помните, что разница будет заметна только на довольно больших объёмах данных. Если в вашей коллекции 10-20 элементов, то вы не увидите никакой разницы.
Данная шпаргалка будет полезна при очередном собеседовании, так как это довольно частый вопрос.

Ну и тут ещё больше кейсов с иллюстрациями, а тут отличное сравление этих двух классов.
  • 🤯 1
More from @android_live
  1. Oct 5, 2026Почему Android-эмулятор жрёт 8 ГБ? На днях попался репозиторий с CLI-тулзой, которая обеща…
  2. Sep 29, 2026Post #1130
  3. Sep 29, 2026На днях попалась вакансия мечты Вроде всё начинается как неплохо: удалёнка, Kotlin/Jetpack…
  4. Sep 28, 2026На днях ревьювил код, связанный с копированием в буфер обмена И заметил, что многие прилож…
  5. Sep 26, 2026AirDrop на Android, похоже, уже есть на нескольких моделях Android Но, оказывается, всё эт…
  6. Sep 25, 2026Похоже, есть что посмотреть на выходных Недавно вышло интервью с Женей Вороновым Jake Whar…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →