← Назад к вопросам

Благодаря чему в ArrayList есть метод get()

1.3 Junior🔥 201 комментариев
#Коллекции#ООП

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Благодаря чему в ArrayList есть метод get()

Метод get() в ArrayList существует благодаря двум основным факторам: интерфейсу List и внутренней реализации на базе массива.

Интерфейс List

ArrayList реализует интерфейс java.util.List, который определяет контракт для упорядоченных коллекций. В этом интерфейсе объявлены методы для работы с элементами по индексу:

public interface List<E> extends Collection<E> {
    E get(int index);
    E set(int index, E element);
    void add(int index, E element);
    E remove(int index);
    // ...
}

Когда ArrayList реализует List, он обязан предоставить эти методы. Интерфейс гарантирует, что любая реализация List поддерживает доступ по индексу.

Внутренняя реализация на базе массива

ArrayList хранит элементы в динамическом массиве (Object[]). Благодаря этому, метод get() может быстро извлекать элемент по индексу за O(1):

private Object[] elementData;

public E get(int index) {
    Objects.checkIndex(index, size);
    return elementData(index);
}

Внутренний массив позволяет осуществлять прямой доступ к элементам, в отличие от LinkedList, где нужно проходить по ссылкам.

Сравнение с другими коллекциями

  • LinkedList: реализует List, но get() работает медленнее (O(n)), так как нужно пройти по связанному списку
  • HashSet: не реализует List, поэтому нет метода get(). Вместо этого используется contains() для поиска

Практическое использование

ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Developer");

String first = list.get(0); // "Java"
String second = list.get(1); // "Developer"

Итог

Метод get() существует в ArrayList потому что:

  1. ArrayList реализует интерфейс List, который его требует
  2. Внутренняя реализация на массиве позволяет эффективно реализовать доступ по индексу за O(1)
  3. Это одно из главных преимуществ ArrayList перед другими коллекциями

Это design pattern, где интерфейс определяет контракт, а реализация обеспечивает эффективное выполнение благодаря выбранной структуре данных.