java.util.ConcurrentModificationException : l'exception nulle est causée par l'ajout et la suppression imbriqués de boucles for améliorées.

question:

Lors de l'utilisation d'une boucle for améliorée sur une collection en Java, une fois la collection ajoutée ou supprimée, une exception java.util.ConcurrentModificationException: null sera provoquée lors de la traversée .

raison:

L'introduction de ConcurrentModificationException dans la documentation officielle est la suivante :

la classe publique ConcurrentModificationException étend RuntimeException

Lorsqu'un thread traverse la collection, les autres threads ne sont généralement pas autorisés à modifier la collection, ce qui rend le résultat de la traversée incertain. Cette exception est levée lorsqu'une méthode détecte qu'une modification simultanée de la collection s'est produite, une telle modification n'est pas autorisée.

Après ajout et suppression d'opérations, les valeurs de expectModCount et modCount de l'ensemble sont incohérentes. Ces deux variables permettent d'enregistrer le nombre de modifications. Si les deux variables ne sont pas égales, une erreur sera levée.

expectModCount : Indique la valeur attendue du nombre de modifications ArrayList, et sa valeur initiale est modCount.

modCount est une variable membre de la classe AbstractList.

Solution:

Méthode 1 : Utilisez index (boucle for ordinaire) pour traverser.
Méthode 2 : utilisez le parcours de boucle for amélioré, et les opérations d'ajout et de suppression sont implémentées à l'aide d'itérateurs.

---------------------------------------Pas de texte ci-dessous--------- - ------------------------------------------------- -

Remarque : Pour étude uniquement, enregistrez les questions et les références, encouragez-vous les uns les autres !

Source reproduite : https://blog.csdn.net/jl08133341/article/details/123128108

Guess you like

Origin blog.csdn.net/qq_39715000/article/details/127390692