TGViewer
Android Live 🤖 Android Live 🤖 @android_live · 5.13K subscribers
Post #374 3.72K
​​Получение частей коллекции в Kotlin
#разработка #новичкам #опрос

Kotlin даёт довольно много различных функций для работы с коллекциями. Выше я уже описывал разницу между коллекцями и последовательностями, а сегодня хотелось бы коснуться некоторых операторов для получения частей коллекции.

• slice() — возвращает список элементов по указанным индексам. Можно указать как интервал индексов, так и конкретные значения. Интересное и важное отличие от функции subList(): эта функция возвращает ссылки на элементы исходного массива, и будет изменяться вместе с ним, а slice — возвращает новый подсписок на основе старого.

• take() — семейство функций, которое оставит нужное количество элементов. Помимо простого take, есть takeLast(), который возьмёт последние элементы из списка, takeWhile(), который оставит первые элементы с условием и takeLastWhile(), который вернёт последние элементы с условием.

• drop() — похожее семейство функций, которое не возвращает, а отсекает указанное число элементов. Имеется также dropWhile() и dropLastWhile(), являющиеся противоположностями таких же операторов в take.

• chunked() — довольно интересная функция, которая разделяет ваш список на несколько списков указанного размера. Например, если применить chunked(2) к списку (2, 4, 3, 10, 8, 7, 9), то на выходе получим ((2, 4), (3, 10), (8, 7), (9)).

• windowed() — ещё более интересная функция, разделяющая список на несколько списков указанного размера, но в отличии от chunked делает этого для каждого следующего элемента. Это можно сравнить с тем, что вы двигаете «окошко» для каждого из элементов списка и получаете новый подсписок. Для предыдущего примера результат windowed(2) будет выглядеть так: ((2, 4), (4, 3), (3, 10), (10, 8), (8, 7), (7, 9)).
Также, здесь есть параметры step — где можно указать шаг, а также partialWindows, который поможет вам, если вы хотите разрешить использование «частичных окошек». Для нашего списка функция windowed(2, 2, true) вернёт аналогичный chunked(2) результат.

Ссылка на документацию по этим операторам тут.

Вам полезна подобная информация?
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 →