Junior
66
questionbank

Какие функции для работы с коллекциями предоставляет язык Kotlin?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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

1. Фильтрация:

  • filter/filterNot: Возвращает список элементов, соответствующих/не соответствующих предикату.
  • filterNotNull: Возвращает список всех ненулевых элементов.
  • filterIsInstance<T>: Возвращает список всех элементов, являющихся экземплярами типа T.

2. Преобразование (Mapping):

  • map/mapIndexed: Преобразует каждый элемент коллекции в новый элемент. mapIndexed также получает индекс элемента.
  • mapNotNull/mapIndexedNotNull: Преобразует каждый элемент, отбрасывая null.
  • flatMap: Преобразует каждый элемент в коллекцию и объединяет их в одну плоскую коллекцию.
  • zip: Создает коллекцию пар из элементов двух коллекций с одинаковыми индексами.

3. Агрегация (Reducing):

  • reduce/fold: Применяет операцию к последовательным элементам коллекции, накапливая результат. fold принимает начальное значение.
  • sum, average, count, max, min: Базовые агрегирующие функции.

4. Упорядочивание:

  • sorted/sortedDescending: Возвращает отсортированную коллекцию.
  • sortedBy/sortedByDescending: Возвращает отсортированную коллекцию по результату применения функции-селектора.
  • reversed: Возвращает список в обратном порядке.
  • shuffled: Возвращает перемешанный список.

5. Получение элементов:

  • first/firstOrNull: Возвращает первый элемент.
  • last/lastOrNull: Возвращает последний элемент.
  • find/findLast: Возвращает первый/последний элемент, соответствующий предикату.
  • elementAt/elementAtOrNull/elementAtOrElse: Возвращает элемент по индексу.
  • single/singleOrNull: Возвращает единственный элемент, если он есть.

6. Проверка условий:

  • all/any: Проверяет, соответствуют ли все/хотя бы один элемент предикату.
  • none: Проверяет, не соответствует ли ни один элемент предикату.
  • contains: Проверяет наличие элемента.

7. Группировка:

  • groupBy: Группирует элементы по ключу, определяемому функцией-селектором.

8. Разделение:

  • partition: Разделяет коллекцию на две части: элементы, соответствующие предикату, и те, которые не соответствуют.
  • chunked: Разбивает коллекцию на части заданного размера.

9. Сравнение коллекций:

  • equals: Сравнивает содержимое двух коллекций.
  • containsAll: Проверяет, содержит ли коллекция все элементы другой коллекции.

10. Множественные операции:

  • intersect: Возвращает общие элементы двух коллекций.
  • subtract: Возвращает элементы первой коллекции, отсутствующие во второй.
  • union: Возвращает все уникальные элементы из обеих коллекций.

Примеры использования:

kotlin