Potete impostare la dimensione iniziale di una ArrayList facendo
ArrayList<Integer> arr=new ArrayList<Integer>(10);
Tuttavia, non si può fare
arr.add(5, 10);
perché causa un'eccezione fuori dai limiti.
A cosa serve impostare una dimensione iniziale se non si può accedere allo spazio allocato?
La funzione add è definita come add(int index, Object element)
quindi non sto aggiungendo all'indice 10.
State confondendo la dimensione della lista dell'array con la sua capacità:
Quando chiamate new ArrayList<Integer>(10)
, state impostando la capacità iniziale della lista, non la sua dimensione. In altre parole, quando è costruita in questo modo, la lista di array inizia la sua vita vuota.
Un modo per aggiungere dieci elementi alla lista di array è usare un ciclo:
for (int i = 0; i < 10; i++) {
arr.add(0);
}
Fatto questo, potete ora modificare gli elementi agli indici 0..9.
10 è la capacità iniziale dell'AL, non la dimensione (che è 0). Dovresti menzionare la capacità iniziale a un valore alto quando hai intenzione di avere un sacco di elementi, perché evita l'overhead di espandere la capacità mentre continui ad aggiungere elementi.
In questo momento non ci sono elementi nella tua lista, quindi non puoi aggiungere all'indice 5 della lista quando non esiste. Stai confondendo la capacità della lista con la sua dimensione attuale.
Basta chiamare:
arr.add(10)
per aggiungere l'intero alla tua ArrayList