Junior — Middle
Aké kroky sa vykonávajú pri pridávaní nového prvku do štruktúry ArrayList?
sobes.tech AI
Odpoveď od AI
Pri pridávaní nového prvku do ArrayList sa vykonajú nasledujúce kroky:
- Skontroluje sa, či je aktuálne vnútorné pole (zvyčajne Object[]) dostatočne veľké na uloženie nového prvku.
- Ak nie je dostatok miesta, vytvorí sa nové pole s zväčšenou veľkosťou (zvyčajne o 50% alebo 1,5 násobok väčšie), a všetky prvky sa do neho skopírujú.
- Nový prvok sa umiestni na prvú voľnú pozíciu vo vnútornom poli.
- Čítač veľkosti zoznamu (size) sa zvýši.
Takto sa zvyčajne pridáva prvok:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // kontrola a rozšírenie poľa
elementData[size++] = e; // pridanie prvku a zvýšenie veľkosti
return true;
}
private void ensureCapacityInternal(int minCapacity) {
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
private void grow(int minCapacity) {
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1); // zväčšenie o 50%
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
elementData = Arrays.copyOf(elementData, newCapacity);
}