Tamanho de um ArrayList – java array

Pergunta:


Em Java…

  • Qual o tamanho inicial de um ArrayList?
  • Atingindo o tamanho máximo, quando ele se “expande”, seu tamanho é duplicado?
Autor da pergunta Josinaldo

Resposta Comunidade:

O capacidade inicial é de 10 elementos, se não for especificada na sua criação. E quando atinge o máximo ele é realocado transparentemente (implementação interna) com o dobro da capacidade atual se a nova capacidade for suficiente. Mas note que isto é detalhe de implementação, então não conte com isto, uma versão diferente da biblioteca pode fazer diferentemente.

A duplicação da capacidade ao invés de alocar só a necessidade é feita para minimizar um problema semelhante ao do Shlemiel the Painter's algorithm onde uma nova pequena adição ao ArrayList já produziria uma nova realocação, tornando a operação cada vez mais lenta. O algoritmo troca uma quantidade exagerada de realocações por um possível desperdício de memória.

Tem algo falando disto no SO aqui e aqui. A documentação oficial diz que a capacidade inicial é 10, então isto provavelmente não mudará.

Fonte

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *