Все ли реализации List в Java можно назвать прокачанным массивом?

«Все ли реализации List в Java можно назвать прокачанным массивом?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет. Только реализации, основанные на массиве (например, ArrayList), можно условно назвать "прокачанным массивом".

Почему?

  • ArrayList действительно использует под капотом динамически расширяемый массив, обеспечивая быстрый произвольный доступ (O(1)).
  • LinkedList реализован как двусвязный список на основе узлов. Он не использует массив, и произвольный доступ в нём медленный (O(n)), но он эффективен для вставок/удалений в середине.

Пример:

List<String> arrayList = new ArrayList<>(); // "Прокачанный массив"
List<String> linkedList = new LinkedList<>(); // Двусвязный список, а не массив

Таким образом, термин применим только к ArrayList и подобным реализациям.