Heim  >  Artikel  >  Java  >  Wie vermeide ich ConcurrentModificationException beim Entfernen von Elementen aus einer ArrayList?

Wie vermeide ich ConcurrentModificationException beim Entfernen von Elementen aus einer ArrayList?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 20:34:30253Durchsuche

How to Avoid ConcurrentModificationException When Removing Elements from an ArrayList?

So überwinden Sie die ConcurrentModificationException beim Durchlaufen und Entfernen von Elementen aus einer ArrayList

Das Durchlaufen einer ArrayList bei gleichzeitigem Entfernen von Elementen kann das berüchtigte Java auslösen. util.ConcurrentModificationException. Um dieses Problem anzugehen, sind mehrere Best Practices zu berücksichtigen.

Ein Ansatz besteht darin, eine separate Liste der Elemente zu erstellen, die Sie entfernen möchten. Fügen Sie diese Elemente während der Schleifeniteration zur sekundären Liste hinzu und rufen Sie nach Abschluss der Iteration die Methode originalList.removeAll(valuesToRemove) auf.

Alternativ können Sie die Methode „remove()“ direkt im Iterator verwenden. Beachten Sie, dass Sie bei dieser Technik die erweiterte for-Schleife meiden müssen. Um beispielsweise Zeichenfolgen mit einer Länge von mehr als 5 aus einer Liste zu entfernen:

List<String> list = new ArrayList<String>();

for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}

Das obige ist der detaillierte Inhalt vonWie vermeide ich ConcurrentModificationException beim Entfernen von Elementen aus 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