7
votes

ArrayList hors limtentions Exception

J'ai le code suivant: xxx

Je reçois une erreur d'index hors limites, et je ne sais pas pourquoi. J'ai déclaré la liste de la taille 10. Pourquoi est-ce que je reçois cette erreur?


0 commentaires

10 Réponses :


3
votes

Le tableau initial contenu est spécifié comme "10" le nombre réel d'éléments de la matrice est 0.

Pour ajouter "5" au premier index, juste do arr.add (5)

La valeur transmise au constructeur ArrayList est la capacité initiale du magasin de support de la matrice. Lorsque vous ajoutez des éléments à un point dépassant cette capacité, l'arrachelist allouera à l'intérieur de la taille d'une taille de stockage et de copier les éléments au nouveau réseau de stockage.


0 commentaires

4
votes

regarder dans le code source JDK de arraylist.set (int, e) donne un indice: vous devez avoir au moins n éléments de votre liste avant de pouvoir appeler SET (N-1, E) .

Ajoutez vos éléments via Ajouter () Méthode.


0 commentaires

9
votes

Vous avez déclaré une arrayliste , qui a la capacité initiale de 10 éléments, mais vous n'avez pas ajouté d'élément à cette liste, c'est-à-dire vide. La liste est vide. SET remplacera un élément existant, mais comme il n'y a pas d'élément dans la liste, l'exception est lancée. Vous devez ajouter des éléments avant, à l'aide de la méthode Ajouter .

capacité initiale signifie que la matrice que la liste maintient en interne est de taille 10 au début. Tout en ajoutant plus d'éléments à la liste, la taille de ce réseau interne pourrait changer.


3 commentaires

Vous devez ajouter des éléments avant, à l'aide de la méthode Set .


Non, il y a une virgule dans ma phrase. Vous devez ajouter des éléments avant **, ** Utilisation de la méthode Ajouter ou vous devez ajouter des éléments avant Aucune virgule à l'aide de la méthode Set


Ok a du sens. :) n'a pas remarqué la virgule.



1
votes

Ce que vous avez passé dans le constructeur n'est que la capacité initiale de la matrice par laquelle la liste est soutenue. La liste est toujours vide après la construction. De plus, vous devez envisager d'utiliser une liste générique si vous souhaitez stocker I.e. Just Integers ..


0 commentaires

0
votes

Utiliser arr.add (0.5) . SET La méthode remplacera l'élément existant.


0 commentaires


0
votes

Set (Int index, e élément) Remplace l'élément à la position spécifiée dans cette liste avec l'élément spécifié. U devrait utiliser ajouter ()


0 commentaires

0
votes

Si vous regardez le Javadoc Notez qu'il dit:

remplace l'élément à la position spécifiée dans cette liste avec l'élément spécifié.

Vous avez besoin d'un élément avant de pouvoir en remplacer un. Essayez xxx

pour simplement ajouter un élément.


0 commentaires

0
votes

Dans le constructeur, vous avez spécifié une capacité initiale. Cependant, la taille de la liste est toujours 0 parce que vous n'avez pas encore ajouté d'éléments.

de la documentation de arraylist.set () :

indexOntOfboundSException - si index hors plage (index <0 || index> = taille ()).


0 commentaires

0
votes

Vous avez une arrayliste initialisée avec nombre d'éléments 0 ce qui signifie que vous avez juste un élément 1 dans ce tableau. et plus tard, vous ajoutez deux nombres dans ce tableau.


0 commentaires