


Когда элементы нужно обрабатывать порциями, используйте chunked. Функция разделяет коллекцию на последовательные списки, а последняя порция может быть неполной. В упражнении Mentoring.digital возьмём пять учебных идентификаторов.
val ids = listOf(11, 12, 13, 14, 15)
val batches = ids.chunked(2)
println(batches)
// [[11, 12], [13, 14], [15]]Размер должен быть положительным. Он может быть больше числа элементов: тогда весь непустой набор окажется в одной порции. Не нужно вручную дополнять последний список, если дальнейшая обработка допускает меньший размер.
Перегрузка с transform позволяет сразу получить результат для каждой порции. Например, в небольшом числовом упражнении можно посчитать суммы.
val totals = ids.chunked(2) { batch ->
batch.sum()
}
println(totals)
// [23, 27, 15]Список, переданный в transform, является временным и действителен внутри этого вызова. Его нельзя сохранять наружу без снимка. Если нужно передать сами элементы дальше и сохранить контейнер, создайте копию через toList() внутри преобразования.
Само разбиение не делает операции параллельными и не задаёт транзакции, повторные попытки или ограничения внешнего API. Сначала определите, как обрабатывать ошибку одной порции и допустима ли повторная обработка её элементов.
Для упражнения проверьте пустой список, ровное деление и неполную последнюю порцию. Если исходные элементы изменяемые, не считайте копирование списка глубокой копией каждого объекта.
Коллекции можно освоить на курсах Kotlin. Выбрать размер порции и поведение при ошибках поможет ментор по Kotlin.