Sobes.tech
Junior — Middle

Как е реализирана възможността за динамично разширяване на масива в ArrayList и защо можете да вмъквате произволен брой елементи в него?

sobes.tech AI

Отговор от AI

ArrayList в Java е реализиран на базата на масив, който първоначално има фиксиран размер. Когато броят на елементите надвиши текущия размер на вътрешния масив, той се разширява: създава се нов масив с по-голям размер и всички елементи се копират в него.

Това позволява добавяне на произволен брой елементи, тъй като ArrayList динамично увеличава капацитета си при необходимост.

Пример за опростена логика за разширяване:

private void ensureCapacity(int minCapacity) {
    if (minCapacity > elementData.length) {
        int newCapacity = elementData.length * 3 / 2 + 1;
        if (newCapacity < minCapacity) {
            newCapacity = minCapacity;
        }
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
}

По този начин, при добавяне на елементи се извиква ensureCapacity, и ако текущият масив е пълен, се създава нов с по-голям размер, което осигурява динамично разширяване.