Sobes.tech
Назад к вопросам
Junior — Middle
120

Какую структуру данных используют для реализации динамического массива подобного ArrayList?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

Динамический массив, подобный ArrayList в Java, реализован на основе обычного массива. Основная идея в том, что при достижении текущего размера массива происходит выделение нового массива с увеличенной емкостью (обычно в 1.5–2 раза больше), и все элементы копируются в него.

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

Пример упрощённой логики:

class SimpleArrayList<E> {
    private Object[] data;
    private int size = 0;

    public SimpleArrayList() {
        data = new Object[10];
    }

    public void add(E element) {
        if (size == data.length) {
            Object[] newData = new Object[data.length * 2];
            System.arraycopy(data, 0, newData, 0, data.length);
            data = newData;
        }
        data[size++] = element;
    }

    public E get(int index) {
        if (index >= size || index < 0) throw new IndexOutOfBoundsException();
        return (E) data[index];
    }
}