Maison > Java > javaDidacticiel > le corps du texte

Méthode pour supprimer des éléments spécifiques dans la boucle de liste de classes de collection Java

高洛峰
Libérer: 2017-01-22 16:12:06
original
1713 Les gens l'ont consulté

Pendant le développement du projet, nous pouvons souvent avoir besoin de supprimer dynamiquement certains éléments de l'ArrayList.

Une mauvaise façon :

<pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){
  
 if(list.get(i)==XXX){
  
    list.remove(i);
  
 }
  
}
Copier après la connexion

La méthode ci-dessus lèvera l'exception suivante :

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
  at java.util.ArrayList.RangeCheck(Unknown Source)
  at java.util.ArrayList.get(Unknown Source)
  at ListDemo.main(ListDemo.java:20)
Copier après la connexion

Parce que vous avez supprimé l'élément mais n'avez pas modifié l'indice d'itération, une exception sera levée lorsque l'itération atteindra la dernière.

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;//减少一个
 }
  
}
Copier après la connexion

Le code ci-dessus est correct.

Introduisons une autre solution ci-dessous :

L'interface List implémente l'interface Iterator en interne, fournissant aux développeurs un iterator() pour obtenir un objet itérateur de l'objet liste actuel.

Iterator<String> sListIterator = list.iterator();
while(sListIterator.hasNext()){
  String e = sListIterator.next();
  if(e.equals("3")){
  sListIterator.remove();
  }
}
Copier après la connexion

Ce qui précède est également correct et la deuxième option est recommandée.

Les principes de mise en œuvre des deux solutions sont assez différents. La seconde est simplement encapsulée par jdk.

En regardant le code source d'ArrayList, vous constaterez que de nombreuses méthodes sont implémentées en interne en fonction de l'interface de l'itérateur, il est donc recommandé d'utiliser la deuxième solution.

Ce qui précède est la méthode complète de suppression d'éléments spécifiques dans la boucle arraylist de la classe de collection Java présentée par l'éditeur. J'espère que vous prendrez en charge le site Web PHP chinois ~

Plus de classe de collection Java. arraylist Pour des articles connexes sur la façon de supprimer des éléments spécifiques dans une boucle, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal