Sobes.tech
Junior — Middle

Quais passos são seguidos para adicionar um novo elemento à estrutura ArrayList?

sobes.tech IA

Resposta da IA

Ao adicionar um novo elemento ao ArrayList, os seguintes passos são realizados:

  1. Verifica-se se o array interno atual (geralmente Object[]) é suficientemente grande para armazenar o novo elemento.
  2. Se não houver espaço suficiente, cria-se um novo array com um tamanho aumentado (geralmente 50% ou 1,5 vezes maior), e todos os elementos são copiados para ele.
  3. O novo elemento é colocado na primeira posição livre do array interno.
  4. O contador de tamanho da lista (size) é incrementado.

Assim é geralmente feito o acréscimo de um elemento:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // verificar e expandir o array
    elementData[size++] = e;            // adicionar o elemento e aumentar o tamanho
    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 de 50%
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}