Maison  >  Article  >  Java  >  Comment supprimer en toute sécurité des éléments d’une carte lors d’une itération ?

Comment supprimer en toute sécurité des éléments d’une carte lors d’une itération ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-17 11:21:02570parcourir

How to Safely Remove Elements from a Map While Iterating?

Itérer et supprimer des éléments d'une carte : une solution améliorée

Lorsque vous essayez de parcourir les clés d'une carte et de supprimer des éléments de manière conditionnelle, vous pourrait rencontrer une ConcurrentModificationException. Pour résoudre ce problème, il est recommandé de créer une nouvelle collection à partir du jeu de clés de la carte et de parcourir celui-ci à la place. Cependant, cette approche peut s'avérer inefficace et complexe.

Une solution plus efficace consiste à utiliser la méthode remove() de l'interface Iterator. Cela vous permet de modifier directement la carte tout en la parcourant. 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();
    }
}

Cet exemple de code illustre comment utiliser l'itérateur dans une boucle for pour supprimer une entrée de la carte. En tirant parti de la méthode Remove(), vous pouvez mettre à jour efficacement le contenu de la carte tout en parcourant ses entrées. Cette approche élimine le besoin de blocs de synchronisation supplémentaires, ce qui en fait une solution plus propre et plus efficace.

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