Comment résoudre : erreur de collection Java : exception de traversée de collection
Introduction :
Dans le développement Java, les collections sont des structures de données très couramment utilisées pour stocker et manipuler un ensemble de données. Cependant, lors de l'utilisation de collections pour des opérations de parcours, des exceptions de parcours de collections sont souvent rencontrées. Cet article décrit la cause et la solution de ce problème et fournit des exemples de code correspondants.
1. Causes des exceptions de traversée de collection :
Lorsque nous utilisons des itérateurs ou des boucles for-each pour parcourir une collection, si la collection est modifiée pendant le processus de traversée (comme l'ajout ou la suppression d'éléments), une exception ConcurrentModificationException sera levée. En effet, pendant le processus de parcours, l'itérateur ou la boucle for-each maintiendra un compteur pour détecter si la structure de la collection a changé et lèvera une exception une fois qu'un changement est trouvé.
2. Solution :
List<String> list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("B")) { iterator.remove(); // 删除元素 } }
List<String> list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); for (int i = list.size() - 1; i >= 0; i--) { String item = list.get(i); if (item.equals("B")) { list.remove(i); // 删除元素 } }
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>(); // 添加元素 map.put("A", 1); map.put("B", 2); map.put("C", 3); for (Map.Entry<String, Integer> entry : map.entrySet()) { if (entry.getValue() == 2) { map.remove(entry.getKey()); // 删除元素 } }
Conclusion :
L'exception de traversée de collection est causée par la modification de la collection pendant le processus de traversée. Pour résoudre ce problème, nous pouvons utiliser un itérateur pour parcourir la collection et utiliser la méthode Remove(), utiliser une boucle for normale pour parcourir la collection et utiliser la méthode Remove() de List, ou utiliser une classe de collection simultanée. Choisir la solution appropriée peut efficacement éviter le problème des exceptions de parcours de collection et garantir le fonctionnement normal du programme.
Nombre total de mots : 437 mots
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!