Wenn Sie gerade erst anfangen, in Java zu schreiben, ist einer der ersten Fehler, auf die Anfänger stoßen, ein schreckliches Biest mit einem langen Namen: ConcurrentModificationException. Dieser Fehler sieht beängstigend aus, aber der Grund dafür ist trivial. Lassen Sie uns herausfinden, warum er auftritt und wie man ihn vermeiden kann.

Was ist los?
List<String> names = new ArrayList<>();
names.add("Anya");
names.add("Boris");
names.add("Vika");
for (String name : names) {
if (name.equals("Vika")) {
names.remove(name); // 💥 ConcurrentModificationException!
}
}Aber anstelle des Ergebnisses fängst du eine Ausnahme.
🤛 Warum passiert das?
Weil for-each verwendet Iterator und du änderst gerade die Liste selbst. Es ist, als würdest du über eine Brücke gehen und jemand würde die Bretter hinter dir auseinandernehmen. JVM sagt: „STOPP! Das ist nicht sicher!“ 🚨
🔍 Wie Sie verstehen, was genau den Fehler verursacht
list.remove()innerhalbfor-eachmap.put()innerhalbforbismap.entrySet()Änderung durch Sammlung innerhalb von
Stream
✅ Wie es richtig gemacht wird
🛠 Methode 1: Verwenden Sie ein normales for
for (int i = 0; i < names.size(); i++) {
if (names.get(i).equals("Vika")) {
names.remove(i);
i--;
}
}🛠 Methode 2: Verwenden Sie Iterator
Iterator<String> it = names.iterator();
while (it.hasNext()) {
if (it.next().equals("Vika")) {
it.remove();
}
}🛠 Methode 3: Verwenden Sie removeIf
names.removeIf(name -> name.equals("Vika"));🤯 Warum Jungs oft falsch liegen
❌ Sie wissen nicht, dass
for-eachIteratorverwendet❌ Verwechseln
remove()bei der Sammlung und beim Iterator❌ Sie haben Angst,
Iteratorzu verwenden, weil es "alt" aussieht❌ Lesen Sie den Trace Stack nicht sorgfältig
💬 Wie es im Gespräch klingt
— Warum hast du
ConcurrentModificationExceptionin deinem Code?
— Ich habe gerade das Element infor-eachgelöscht...
ConcurrentModificationException ist kein Fehler, sondern ein Schutz vor potenziell gefährlichem Verhalten. Und wenn du es erwischt hast, sei froh! Du bist jetzt einen Schritt näher daran, Java auf einer tiefen Ebene zu verstehen 🧩
📚 Möchten Sie tiefer in das Thema einsteigen?
Im Anhang Kodik Du findest detaillierte Lektionen zu CMake und C++, Schritt-für-Schritt-Übungen, Fehleranalyse und praktische Übungen direkt auf deinem Handy oder Browser.
Und wenn Sie über Neuigkeiten, neue Funktionen und nützliche Materialien informiert werden möchten, abonnieren Sie unseren Telegram-Kanal. Dort ist es gemütlich, geschäftlich und mit Liebe zum Code ❤️
