339 votes

Taille initiale de l’arraylist

C’est peut-être une question stupide, mais c’est ici. Ainsi, vous pouvez définir la taille initiale d’une liste de tableaux en faisant

Toutefois, vous ne pouvez pas faire (provoque une sortie d’exception de limites)

Donc ma question est quelle est l’utilité de mettre une taille initiale, alors si vous ne pouvez pas accéder à l’espace que vous avez alloué ?

Mise à jour : La fonction add est définie comme `` donc je ne suis pas ajouter à l’index 10.

482voto

NPE Points 169956

Vous êtes à la confusion de la taille de la liste de tableau avec sa capacité:

  • la taille est le nombre d'éléments dans la liste;
  • la capacité est de savoir comment de nombreux éléments de la liste peuvent potentiellement accueillir sans la réaffectation de ses structures internes.

Lorsque vous appelez new ArrayList<Integer>(10), vous définissez la liste initiale de la capacité, non pas de sa taille. En d'autres termes, lorsqu'elle est construite de cette manière, le tableau de la liste débute sa vie vide.

Une façon d'ajouter de dix éléments au tableau liste est par l'utilisation d'une boucle:

for (int i = 0; i < 10; i++) {
  arr.add(0);
}

Ayant fait cela, vous pouvez maintenant modifier les éléments d'indices 0..9.

154voto

Si vous voulez une liste avec une taille prédéfinie, que vous pouvez également utiliser :

23voto

Natix Points 4421

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.

10voto

user3692587 Points 1

Si vous souhaitez ajouter des éléments avec l’index, vous pouvez plutôt utiliser un tableau.

9voto

Bhesh Gurung Points 24875

10 est la capacité initiale de l’AL, pas la taille (c'est-à-dire 0). Lorsque vous allez avoir un grand nombre d’éléments, car elle évite la surcharge d’expansion de la capacité que vous conservez à ajouter des éléments que tu dois mentionner la capacité initiale à une valeur élevée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X