Вот соответствующая реализация:
public fun <T> Iterable<T>.toList(): List<T> {
if (this is Collection) {
return when (size) {
0 -> emptyList()
1 -> listOf(if (this is List) get(0) else iterator().next())
else -> this.toMutableList()
}
}
return this.toMutableList().optimizeReadOnlyList()
}
Похоже, это сводится к использованию конструктора ArrayList(elements: Collection<E>)
, который используется в toMutableList
. ArrayList
поддерживается массивом, что приводит к O(n)
времени, когда создает массив . Пожалуйста, имейте в виду, что это в конечном итоге зависит от того, какая реализация списка используется. Прямо сейчас это ArrayList
.