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
DDDoriginal
2024-11-25 09:02:10714parcourir

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);
    }
}

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);

    }
}

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!

Déclaration:
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