Sobes.tech
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:

  1. Skontroluje sa, či je aktuálne vnútorné pole (zvyčajne Object[]) dostatočne veľké na uloženie nového prvku.
  2. 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ú.
  3. Nový prvok sa umiestni na prvú voľnú pozíciu vo vnútornom poli.
  4. Čí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);
}