Maison > Java > javaDidacticiel > Comment éviter ConcurrentModificationException lors de l'itération et de la modification d'une liste ?

Comment éviter ConcurrentModificationException lors de l'itération et de la modification d'une liste ?

DDD
Libérer: 2024-11-25 09:02:10
original
710 Les gens l'ont consulté

How to Avoid ConcurrentModificationException When Iterating and Modifying a List?

Gestion des exceptions de modification simultanée

Problème :

Rencontre d'une exception de modification simultanée lors d'une itération une liste, même lorsqu'aucune modification simultanée ne semble être se produisant.

Implémentation :

Le code fourni crée simultanément une liste et un itérateur de liste. Il ajoute ensuite des éléments à la liste tout en la parcourant, provoquant l'exception.

import java.util.*;

public class SomeClass {
    public static void main(String[] args) {
        List<String> s = new ArrayList<>();
        ListIterator<String> it = s.listIterator();

        for (String a : args)
            s.add(a);

        if (it.hasNext())
            String item = it.next();

        System.out.println(s);
    }
}
Copier après la connexion

Solution :

Pour éviter l'exception, modifiez le code comme suit :

import java.util.*;

public class SomeClass {

    public static void main(String[] args) {
        List<String> s = new ArrayList<>();

        for(String a : args)
            s.add(a);

        ListIterator<String> it = s.listIterator();    
        if(it.hasNext()) {  
            String item = it.next();   
        }  

        System.out.println(s);

    }
}
Copier après la connexion

Dans ce code modifié, l'itérateur de liste est créé une fois que tous les éléments ont été ajoutés à la liste. Cela garantit que la liste n'est pas modifiée entre la création et l'utilisation de l'itérateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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