In Java kann das Iterieren über eine Karte und das Entfernen eines Eintrags während der Iteration eine ConcurrentModificationException auslösen. Um diese Ausnahme zu vermeiden, besteht eine gängige Lösung darin, den Schlüsselsatz in eine neue Datenstruktur, beispielsweise eine ArrayList, zu kopieren und stattdessen darüber zu iterieren.
Ein anderer Ansatz besteht darin, die Methode iterator() für den Eintrag zu verwenden Satz der Karte. Der von dieser Methode zurückgegebene Iterator kann zum Durchlaufen der Einträge verwendet werden, und seine Methode „remove()“ kann zum Entfernen des Eintrags aus der Karte verwendet werden.
Hier ist ein Beispiel für die Verwendung dieses Ansatzes:
Map<String, String> map = new HashMap<String, String>() { { put("test", "test123"); 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(); } }
Dieser Ansatz wird dem Kopieren des Schlüsselsatzes in eine neue Datenstruktur vorgezogen, da er effizienter ist und nicht die Erstellung eines neuen Objekts erfordert.
Das obige ist der detaillierte Inhalt vonWie entferne ich während der Iteration sicher Einträge aus einer Java-Map?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!