Sobes.tech
Junior — Middle

Jaké kroky jsou prováděny při přidávání nového prvku do struktury ArrayList?

sobes.tech AI

Odpověď od AI

Při přidání nového prvku do ArrayList se provádí následující kroky:

  1. Zkontroluje se, zda je aktuální vnitřní pole (obvykle Object[]) dostatečně velké pro uložení nového prvku.
  2. Pokud není dostatek místa, vytvoří se nové pole s zvětšenou velikostí (obvykle o 50 % nebo 1,5krát větší), a všechny prvky se do něj zkopírují.
  3. Nový prvek se umístí na první volnou pozici v interním poli.
  4. Zvýší se čítač velikosti seznamu (size).

Obvykle se přidání prvku provádí takto:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // kontrola a rozšíření pole
    elementData[size++] = e;            // přidání prvku a zvýšení velikosti
    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ětšení o 50%
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}