Назад к вопросам
Junior
101
questionbank
Какие функции для работы с коллекциями предоставляет язык Kotlin?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
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: Возвращает все уникальные элементы из обеих коллекций.
Примеры использования:
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
// Фильтрация
val evenNumbers = numbers.filter { it % 2 == 0 } // [2, 4, 6]
// Преобразование
val squaredNumbers = numbers.map { it * it } // [1, 4, 9, 16, 25, 36]
// Агрегация
val sumOfNumbers = numbers.sum() // 21
// Группировка
val names = listOf("Alice", "Bob", "Charlie", "David")
val groupedByNameLength = names.groupBy { it.length }
// {5=[Alice, Charlie], 3=[Bob], 4=[David]}
}