Я считаю, что это упущение, было бы нецелесообразно менять порядок элементов, это было бы крайне неэффективно.
Порядок, по крайней мере, гарантирован реализацией метода, как вы можете видеть ниже.
Расширенный цикл for используется для циклического прохождения всей коллекции и применяет изменения только к соответствующему индексу.
Тот факт, что он возвращает List
, является логичным, поскольку вы получите тот же List
обратно (фактически полная копия - но с теми же объектами), только с необходимыми изменениями.
/**
* Applies the given [transform] function to each element and its index in the original collection
* and appends the results to the given [destination].
* @param [transform] function that takes the index of an element and the element itself
* and returns the result of the transform applied to the element.
*/
public inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {
var index = 0
for (item in this)
destination.add(transform(checkIndexOverflow(index++), item))
return destination
}