Puede establecer el tamaño inicial de una ArrayList haciendo
ArrayList<Integer> arr=new ArrayList<Integer>(10);Sin embargo, no puedes hacer
arr.add(5, 10);porque provoca una excepción fuera de los límites.
¿De qué sirve establecer un tamaño inicial si no puede acceder al espacio que asignó?
La función de agregar se define como add(int index, Object element) por lo que no estoy agregando al índice 10.
Estás confundiendo el tamaño de la lista de arreglos con su capacidad:
Cuando llama a new ArrayList<Integer>(10) , está configurando la capacidad inicial de la lista, no su tamaño. En otras palabras, cuando se construye de esta manera, la lista de arreglos comienza su vida vacía.
Una forma de agregar diez elementos a la lista de arreglos es usando un ciclo:
for (int i = 0; i < 10; i++) { arr.add(0); }Habiendo hecho esto, ahora puede modificar elementos en los índices 0..9.
Si quieres una lista con un tamaño predefinido también puedes usar:
List<Integer> arr = Arrays.asList(new Integer[10]);si desea utilizar Collections.fill(list, obj); para llenar la lista con un objeto repetido alternativamente puede usar
ArrayList<Integer> arr=new ArrayList<Integer>(Collections.nCopies(10, 0));la línea copia 10 veces 0 en su ArrayList