Какая структура используется под капотом у MutableList и ImmutableList

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

Ответ

В Kotlin MutableList и ImmutableList (обычно List) — это интерфейсы. Под капотом:

  1. List (Immutable)
    Чаще всего реализуется через java.util.Collections$UnmodifiableRandomAccessList или аналогичные обертки, которые запрещают модификацию.

  2. MutableList
    Обычно используется java.util.ArrayList — динамический массив с автоматическим увеличением capacity при добавлении элементов.

Пример:

val immutable: List<Int> = listOf(1, 2, 3) // Unmodifiable обертка
val mutable: MutableList<Int> = mutableListOf(1, 2, 3) // ArrayList внутри

Нюанс: listOf() возвращает разные реализации в зависимости от размера (например, пустой список — EmptyList).