Где быстрее работает получение элемента по индексу: в Set или List

«Где быстрее работает получение элемента по индексу: в Set или List» — вопрос из категории Алгоритмы и структуры данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В List доступ по индексу работает быстрее (O(1)), так как элементы хранятся последовательно в памяти. Например, ArrayList использует обычный массив под капотом.

Set (например, HashSet) не гарантирует порядок элементов и не предоставляет доступ по индексу. Для поиска элемента нужно перебирать коллекцию (в худшем случае O(n)), либо использовать хеш-таблицу (O(1) для contains(), но не для индексации).

Пример:

val list = listOf("a", "b", "c")  
println(list[1]) // Быстро (O(1))  

val set = setOf("a", "b", "c")  
println(set.elementAt(1)) // Медленнее (O(n))