La capacité d'un ArrayList
n'est pas la même que sa taille. La taille est égale au nombre d'éléments contenus dans l' ArrayList
(et de tout autre List
mise en œuvre).
La capacité est juste la longueur de la sous-matrice qui est utilisé pour stocker en interne les éléments de l' ArrayList
, et est toujours supérieure ou égale à la taille de la liste.
Lors de l'appel d' set(index, element)
sur la liste, l' index
concerne le nombre réel des éléments de la liste (=taille) (qui est égale à zéro dans votre code, donc l' AIOOBE
est jeté), pas à la longueur du tableau (=capacité) (qui est un détail d'implémentation spécifique à l' ArrayList
).
L' set
méthode est commune à tous List
implémentations, comme LinkedList
, ce qui n'est pas réellement mis en œuvre par un tableau, mais comme liés de la chaîne d'entrées.
Edit: Vous avez réellement utilisé l' add(index, element)
méthode, pas set(index, element)
, mais le principe est le même ici.