Heim  >  Artikel  >  Java  >  So beheben Sie: Java-Sammlungsfehler: Ausnahme beim Durchlaufen der Sammlung

So beheben Sie: Java-Sammlungsfehler: Ausnahme beim Durchlaufen der Sammlung

PHPz
PHPzOriginal
2023-08-25 23:48:221708Durchsuche

So beheben Sie: Java-Sammlungsfehler: Ausnahme beim Durchlaufen der Sammlung

So lösen Sie: Java-Sammlungsfehler: Ausnahme beim Durchlaufen der Sammlung

Einführung:
In der Java-Entwicklung sind Sammlungen sehr häufig verwendete Datenstrukturen zum Speichern und Bearbeiten eines Datensatzes. Bei der Verwendung von Sammlungen für Durchlaufvorgänge treten jedoch häufig Ausnahmen beim Durchlaufen von Sammlungen auf. Dieser Artikel beschreibt die Ursache und Lösung dieses Problems und stellt entsprechende Codebeispiele bereit.

1. Ursachen für Ausnahmen beim Durchlaufen von Sammlungen:
Wenn wir Iteratoren oder for-each-Schleifen zum Durchlaufen einer Sammlung verwenden und die Sammlung während des Durchquerungsprozesses geändert wird (z. B. Hinzufügen oder Löschen von Elementen), wird eine ConcurrentModificationException-Ausnahme ausgelöst. Dies liegt daran, dass der Iterator oder die for-each-Schleife während des Durchlaufvorgangs einen Zähler verwaltet, um zu erkennen, ob sich die Struktur der Sammlung geändert hat, und eine Ausnahme auslöst, sobald eine Änderung festgestellt wird.

2. Lösung:

  1. Verwenden Sie Iterator, um die Sammlung zu durchlaufen, und verwenden Sie die Methode „remove()“ von Iterator, um Elemente während des Durchlaufvorgangs zu löschen. Ein Beispiel ist wie folgt:
List<String> list = new ArrayList<>();
// 添加元素
list.add("A");
list.add("B");
list.add("C");

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (item.equals("B")) {
        iterator.remove(); // 删除元素
    }
}
  1. Wenn Sie eine normale for-Schleife zum Durchlaufen einer Sammlung verwenden, können Sie die Methode „remove()“ von List verwenden, um Elemente zu löschen, und Sie müssen die Sammlung in umgekehrter Reihenfolge durchlaufen, um Änderungen zu vermeiden der Index. Beispiele hierfür sind:
List<String> list = new ArrayList<>();
// 添加元素
list.add("A");
list.add("B");
list.add("C");

for (int i = list.size() - 1; i >= 0; i--) {
    String item = list.get(i);
    if (item.equals("B")) {
        list.remove(i); // 删除元素
    }
}
  1. Verwenden Sie gleichzeitige Sammlungsklassen wie ConcurrentHashMap oder CopyOnWriteArrayList, die es ermöglichen, die Sammlung während des Durchlaufs zu ändern, ohne Ausnahmen auszulösen. Ein Beispiel lautet wie folgt:
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
// 添加元素
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

for (Map.Entry<String, Integer> entry : map.entrySet()) {
    if (entry.getValue() == 2) {
        map.remove(entry.getKey()); // 删除元素
    }
}

Schlussfolgerung:
Eine Sammlungsdurchlaufausnahme wird durch die Änderung der Sammlung während des Durchlaufvorgangs verursacht. Um dieses Problem zu lösen, können wir einen Iterator verwenden, um die Sammlung zu durchlaufen und die Methode „remove()“ zu verwenden, eine normale for-Schleife verwenden, um die Sammlung zu durchlaufen und die Methode „remove()“ von List zu verwenden, oder eine gleichzeitige Sammlungsklasse verwenden. Durch die Wahl der geeigneten Lösung kann das Problem von Ausnahmen beim Durchlaufen der Sammlung wirksam vermieden und der normale Betrieb des Programms sichergestellt werden.

Gesamtwortzahl: 437 Wörter

Das obige ist der detaillierte Inhalt vonSo beheben Sie: Java-Sammlungsfehler: Ausnahme beim Durchlaufen der Sammlung. 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