Dans le développement de projets, nous pouvons souvent devoir supprimer dynamiquement certains éléments de la liste Array.
Une mauvaise façon:
<pren name = "code"> for (int i = 0, len = list.size (); i <len; ++ i) {if (list.get (i) == xxx) {list.remove (i); }}La méthode ci-dessus lancera l'exception suivante:
Exception dans Thread "Main" java.lang.indexoutofboundsException: Index: 3, taille: 3 sur java.util.arraylist.rangcheck (source inconnue) sur java.util.arraylist.get (source inconnue) sur listdemo.main (listdemo.java:20)
Parce que vous avez supprimé l'élément, mais que vous n'avez pas changé l'indice d'itération, de sorte que lorsque l'itération atteint la dernière, une exception sera lancée.
Le programme ci-dessus peut être amélioré comme suit:
for (int i = 0, len = list.size (); i <len; ++ i) {if (list.get (i) == xxx) {list.remove (i); --Len; // en réduisez un}}Le code ci-dessus est correct.
Présentez une autre solution:
L'interface de liste implémente l'interface Iterator en interne, fournissant au développeur un iterator () pour obtenir un objet Iterator de l'objet de liste actuel.
Iterator <string> slistiterator = list.iterator (); while (slistiterator.hasnext ()) {String e = slistiterator.next (); if (e.equals ("3")) {SliSiterator.Remove (); }}Ce qui précède est également correct et la deuxième solution est recommandée.
Les principes de mise en œuvre des deux solutions sont à peu près les mêmes, et le second est simplement encapsulé par JDK.
Lors de l'affichage du code source ArrayList, vous constaterez que de nombreuses méthodes sont implémentées en interne en fonction de l'interface Iterator, de sorte que la deuxième solution est recommandée.
Ce qui précède est l'intégralité du contenu de la méthode pour supprimer des éléments spécifiques dans la boucle ArrayList de la collection Java qui vous a été apportée. J'espère que tout le monde prend en charge wulin.com ~