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!