Por que iniciar uma ArrayList com uma capacidade inicial?

O construtor usual deArrayList é:

ArrayList<?> list = new ArrayList<>();

Mas também há um construtor sobrecarregado com um parâmetro para sua capacidade inicial:

ArrayList<?> list = new ArrayList<>(20);

Por que é útil criar umArrayList com uma capacidade inicial quando podemos acrescentar a ela como quisermos?

questionAnswers(11)

yourAnswerToTheQuestion