Itération et suppression d'une carte simultanée
Lors de la modification d'une carte pendant l'itération, il est crucial d'éviter les erreurs ConcurrentModificationException. L'approche classique consistant à utiliser for (Object key : map.keySet()) échoue car des modifications de carte peuvent se produire pendant la boucle.
Une solution de contournement courante consiste à copier l'ensemble de clés dans une nouvelle collection, comme indiqué dans for (Clé d'objet : new ArrayList
Une meilleure solution consiste à utiliser un itérateur pour supprimer les entrées de la carte. Voici un exemple :
Map<String, String> map = new HashMap<>(); map.put("test", "test123"); map.put("test2", "test456"); for(Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext(); ) { Map.Entry<String, String> entry = it.next(); if(entry.getKey().equals("test")) { it.remove(); } }
Ce code utilise un itérateur pour supprimer en toute sécurité des entrées de la carte. La méthode remove() de l'itérateur supprime l'entrée actuelle, permettant des modifications de carte sûres et efficaces pendant l'itération.
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!