Heim >Java >javaLernprogramm >Wie vermeide ich eine ConcurrentModificationException beim Iterieren und Ändern einer ArrayList?

Wie vermeide ich eine ConcurrentModificationException beim Iterieren und Ändern einer ArrayList?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 08:21:28798Durchsuche

How to Avoid a ConcurrentModificationException When Iterating and Modifying an ArrayList?

ConcurrentModificationException tritt auf, wenn eine ArrayList gleichzeitig durchlaufen (iteriert) und geändert wird. In diesem Artikel werden die Best Practices für den Umgang mit dieser Ausnahme untersucht und alternative Ansätze beschrieben.

Ausnahme gleichzeitiger Änderungen vermeiden

Um das Auftreten der Ausnahme zu verhindern, stehen zwei Optionen zur Verfügung:

  1. Erstellen Sie eine Liste der zu entfernenden Werte: Fügen Sie während der Iteration Werte hinzu, die entfernt werden müssen, zu einer separaten Liste. Sobald die Iteration abgeschlossen ist, rufen Sie die Methode „removeAll“ für die ursprüngliche Liste auf.
  2. Verwenden Sie die Remove-Methode des Iterators: Anstatt die ArrayList direkt in der Schleife zu ändern, verwenden Sie die Methode „remove“. des Iterators selbst. Dies erfordert die Verwendung der herkömmlichen for-Schleife anstelle der erweiterten for-Schleife.

Beispiel für die Remove-Methode von Iterator:

Betrachten Sie das Szenario des Entfernens von Zeichenfolgen mit einer Länge größer als 5 aus einer ArrayList:

<code class="java">List<String> list = new ArrayList<>();
...
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}</code>

In diesem Beispiel wird die „remove“-Methode des Iterators verwendet, um die ursprüngliche Liste während der Iteration sicher zu ändern.

Das obige ist der detaillierte Inhalt vonWie vermeide ich eine ConcurrentModificationException beim Iterieren und Ändern einer ArrayList?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn