Sobes.tech
Junior — Middle

Koji koraci se preduzimaju za dodavanje novog elementa u strukturu ArrayList?

sobes.tech АИ

Одговор од АИ

Prilikom dodavanja novog elementa u ArrayList, sledeći koraci se izvršavaju:

  1. Proverava se da li je trenutni unutrašnji niz (obično Object[]) dovoljno velik za smeštaj novog elementa.
  2. Ako nema dovoljno mesta, kreira se novi niz sa povećanom veličinom (obično za 50% ili 1.5 puta veći), i svi elementi se kopiraju u njega.
  3. Novi element se postavlja na prvu slobodnu poziciju unutar unutrašnjeg niza.
  4. Brojač veličine liste (size) se povećava.

Evo kako se obično dodaje element:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // provera i proširenje niza
    elementData[size++] = e;            // dodavanje elementa i povećanje veličine
    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); // povećanje za 50%
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}