Назад к вопросам
Junior
109
questionbank
Какие стандартные функции для работы с коллекциями в Kotlin вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Стандартные функции для работы с коллекциями в Kotlin очень разнообразны и позволяют выполнять множество операций:
Операции трансформации:
map: Преобразует каждый элемент коллекции в новый элемент, возвращая новую коллекцию с результатами.flatMap: Преобразует каждый элемент в коллекцию элементов и объединяет все результирующие коллекции в одну.zip: Создает пары из элементов двух коллекций с одинаковыми индексами.unzip: Разбивает коллекцию пар на две коллекции.
Операции фильтрации:
filter: Возвращает коллекцию, содержащую только элементы, удовлетворяющие заданному предикату.filterNotNull: Возвращает новую коллекцию, содержащую только ненулевые элементы.filterIsInstance: Возвращает коллекцию, содержащую только элементы заданного типа.distinct: Возвращает коллекцию с уникальными элементами.drop: Возвращает коллекцию без первых N элементов.dropLast: Возвращает коллекцию без последних N элементов.take: Возвращает первых N элементов коллекции.takeLast: Возвращает последних N элементов коллекции.
Операции упорядочивания:
sorted: Возвращает отсортированную коллекцию в естественном порядке.sortedBy: Возвращает коллекцию, отсортированную по результату вычисления заданного селектора для каждого элемента.sortedDescending: Возвращает коллекцию, отсортированную в обратном естественном порядке.sortedByDescending: Возвращает коллекцию, отсортированную в обратном порядке по результату вычисления заданного селектора.reversed: Возвращает список с элементами в обратном порядке.
Операции агрегации (редукции):
fold: Свертывает коллекцию в одно значение, применяя функцию к аккумулятору и каждому элементу. Имеет начальное значение аккумулятора.reduce: Свертывает коллекцию в одно значение, применяя функцию к аккумулятору и каждому элементу. Первым значением аккумулятора является первый элемент коллекции.sum: Вычисляет сумму всех числовых элементов коллекции.average: Вычисляет среднее значение числовых элементов коллекции.count: Возвращает количество элементов в коллекции.maxOrNull: Возвращает максимальный элемент или null, если коллекция пуста.minOrNull: Возвращает минимальный элемент или null, если коллекция пуста.maxByOrNull: Возвращает элемент, для которого заданный селектор возвращает максимальное значение.minByOrNull: Возвращает элемент, для которого заданный селектор возвращает минимальное значение.
Операции поиска элементов:
find: Возвращает первый элемент, удовлетворяющий заданному предикату, или null.findLast: Возвращает последний элемент, удовлетворяющий заданному предикату, или null.first: Возвращает первый элемент.last: Возвращает последний элемент.firstOrNull: Возвращает первый элемент или null, если коллекция пуста.lastOrNull: Возвращает последний элемент или null, если коллекция пуста.indexOf: Возвращает индекс первого вхождения заданного элемента.lastIndexOf: Возвращает индекс последнего вхождения заданного элемента.single: Возвращает единственный элемент, если он есть. Выбрасывает исключение, если элементов нет или их больше одного.singleOrNull: Возвращает единственный элемент или null, если элементов нет или их больше одного.
Операции над частями коллекции:
slice: Возвращает список элементов по заданным индексам.chunked: Разделяет коллекцию на списки заданного размера.windowed: Создает скользящие окна заданного размера.
Операции сгруппировки:
groupBy: Группирует элементы по ключу, возвращая Map, где ключ - результат функции-селектора, а значение - список элементов с этим ключом.groupingBy: Возвращает объект Grouping, который позволяет выполнять ленивые агрегации над группами.
Операции проверки:
all: Проверяет, что все элементы удовлетворяют заданному предикату.any: Проверяет, что хотя бы один элемент удовлетворяет заданному предикату.none: Проверяет, что ни один элемент не удовлетворяет заданному предикату.contains: Проверяет, содержит ли коллекция заданный элемент.isEmpty: Проверяет, является ли коллекция пустой.isNotEmpty: Проверяет, является ли коллекция не пустой.
Это лишь часть стандартных функций, доступных для работы с коллекциями в Kotlin. Многие из них имеют перегрузки для разных типов коллекций и параметров.
Пример использования map:
// Список чисел
val numbers = listOf(1, 2, 3, 4, 5)
// Преобразование каждого числа в его квадрат
val squares = numbers.map { it * it }
// squares: [1, 4, 9, 16, 25]
Пример использования filter:
// Список строк
val fruits = listOf("apple", "banana", "cherry", "date")
// Фильтрация по длинам строк больше 5
val longFruits = fruits.filter { it.length > 5 }
// longFruits: [banana, cherry]