Sobes.tech
Junior — Middle

Quali passaggi vengono eseguiti per aggiungere un nuovo elemento alla struttura ArrayList?

sobes.tech AI

Risposta dell'AI

Quando si aggiunge un nuovo elemento a ArrayList, vengono eseguiti i seguenti passaggi:

  1. Si verifica se l'array interno attuale (di solito Object[]) è abbastanza grande da contenere il nuovo elemento.
  2. Se non c'è spazio sufficiente, viene creato un nuovo array con una dimensione aumentata (di solito del 50% o 1,5 volte più grande), e tutti gli elementi vengono copiati in esso.
  3. Il nuovo elemento viene inserito nella prima posizione libera dell'array interno.
  4. Il contatore della dimensione della lista (size) viene incrementato.

Ecco come generalmente si aggiunge un elemento:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // verifica e espansione dell'array
    elementData[size++] = e;            // aggiunta dell'elemento e incremento della dimensione
    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); // aumento del 50%
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}