Какая скорость поиска элемента в ArrayList

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

Ответ

Поиск элемента в ArrayList имеет линейную сложность O(n), так как в худшем случае необходимо пройти все элементы списка до нахождения нужного.

Если список отсортирован, можно использовать Collections.binarySearch(), что снизит сложность до O(log n).

val list = arrayListOf(1, 2, 3, 4, 5)
val index = list.indexOf(3) // O(n)
val sortedIndex = Collections.binarySearch(list, 3) // O(log n)

Для частых поисков лучше использовать HashSet (O(1)) или TreeSet (O(log n)).