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, и ако текущият масив е пълен, се създава нов с по-голям размер, което осигурява динамично разширяване.