Hashset toList () время сложность в kotlin, это постоянная или нет? - PullRequest
0 голосов
/ 19 января 2020

Я мог бы представить, что это может быть O (1), но не могу найти информацию об этом в Интернете.

1 Ответ

0 голосов
/ 19 января 2020

Вот соответствующая реализация:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...