Você pode definir o tamanho inicial para uma ArrayList ao fazer
ArrayList<Integer> arr=new ArrayList<Integer>(10);
No entanto, você pode't fazer
arr.add(5, 10);
porque causa uma excepção fora dos limites.
Para que serve definir um tamanho inicial se você pode't acessar o espaço que você alocou?
A função adicionar é definida como add(int index, Object element)
por isso não estou adicionando ao índice 10.
Você'está confundindo o tamanho da lista de array com sua capacidade:
o **tamanho*** é o número de elementos da lista;
Quando você chama new ArrayList<Integer>(10)
, você está definindo a lista's inicial capacidade, não o seu tamanho. Em outras palavras, quando construída dessa forma, a lista de array começa sua vida vazia.
Uma maneira de adicionar dez elementos à lista de array é usando um loop:
for (int i = 0; i < 10; i++) {
arr.add(0);
}
Tendo feito isso, agora você pode modificar elementos nos índices 0...9.
10 é a capacidade inicial do AL, não o tamanho (que é 0). Deve-se mencionar a capacidade inicial a algum valor alto quando se vai ter muitos elementos, porque evita a sobrecarga de expandir a capacidade à medida que se vão adicionando elementos.
Neste momento não há elementos na sua lista, por isso não pode adicionar ao índice 5 da lista quando este não existe. Você está confundindo a capacidade da lista com seu tamanho atual.
Basta ligar:
arr.add(10)
para adicionar o Inteiro à sua ArrayList