java.util.ConcurrentModificationException

Status
Nicht offen für weitere Antworten.

flokki

Mitglied
hi!
hab da eine vermutlich ziemlich dumme frage.

das is mein code:
Code:
remove:
			for (Person thisPerson : testlib.getPeople()) {
			     if(thisPerson.getName().equalsIgnoreCase(name)){
				     break remove;
			     }	
		   }
 testlib.removePerson(thisPerson);

da ich removePerson früher in der if-anweisung hatte erhielt ich immer diese exception. die tritt ja angeblich auf weil man nicht während der iterierung elemente löschen kann.
deshalb hab ich das remove nun außerhalb der schleife. natürlich findet er nun thisPerson nichtmehr.
hat jemand eine ahnung wie ich das ganze problem vielleicht überhaupt schöner lösen kann? bin leider anfänger :cry:

dank im voraus+mfg
flokki
 

Wildcard

Top Contributor
1. Lass die Finger von Sprunglabels
2. Du verwendest die foreach Schleife. Intern wird dabei ein iterator verwendet. Da du aber den Iterator nie zu Gesicht bekommst, kannst du auch dessen remove Methode nicht verwenden.

Lösung:
Entferne die foreach Schleife, verwende den Iterator in einer while Schleife und nimm die remove Methode des Iterators
Code:
Iterator it = testlib.getPeople().iterator();
while(it.hasNext())
{
     Person thisPerson = (Person)it.next();
     if(thisPerson.getName().equalsIgnoreCase(name))
     {
                 it.remove();
     }    
}
 

flokki

Mitglied
wow! vielen dank für die super schnelle hilfe!
hat super geklappt. frag mich nur, wozu meine testlib Klasse dann die methode removePerson() hat wenn das über den iterator geht, oder hab ich da was falsch verstanden?

vielen dank!
 

Wildcard

Top Contributor
Solange man mit dem Iterator iteriert, müssen Änderungen an der Collection über dessen Interface passieren, da der Iterator sonst nichts davon mitbekommt. Verwendest du keinen Iterator, kannst du auch auf andere Art Elemente entfernen.
 

flokki

Mitglied
also das mit dem iterator is schon eine feine sache. das ganze sieht nun so aus:
Code:
else if(choice.equalsIgnoreCase("g")){
				System.out.println("Enter person's name: ");
				String name = read.readLine();
				Iterator it = testlib.getPeople().iterator();
				while(it.hasNext()){
				     Person thisPerson = (Person)it.next();
				     if(thisPerson.getName().equalsIgnoreCase(name)){
				                 it.remove();
				     }   
				}
}

und da hab ich auch schon die nächste anfängerfrage.
meine while schleife sucht nun über den iterator die person deren name eingegeben wurde aus einer arraylist heraus. wenn ich nun bei der eingabe einen namen mitgebe, der nicht in der liste ist passiert garnix, weil ich keine eingabeüberprüfung habe.
wie sieht da eine schöne java lösung aus? über das else zu sagen, dass der eingegebene name nicht vorhanden is kann nix, weil er ja dann solange postet bis er den namen erreicht. macht man das über exceptions?
 

Marco13

Top Contributor
Da sieht die Java-Lösung so aus, wie die in jeder anderen Sprache. Entscheidend ist höchstens noch die Frage, ob ALLE Personen mit dem angegebenen Namen entfernt werden sollen, oder nur die erste. Aber allgemein eben sowas

Code:
else if(choice.equalsIgnoreCase("g")){
				System.out.println("Enter person's name: ");
				String name = read.readLine();
				Iterator it = testlib.getPeople().iterator();
                                boolean joDieWarDaDrin = false;
				while(it.hasNext()){
				     Person thisPerson = (Person)it.next();
				     if(thisPerson.getName().equalsIgnoreCase(name)){
				                 it.remove();
                                                 joDieWarDaDrin = true;
				     }   
				}
                                if (!joDieWarDaDrin) System.out.println("War nich drin....");
}
 

flokki

Mitglied
ok. das heißt ich setz einfach eine flag.
ich stell leider immer so blöde fragen weil ich der meinung bin, dass java so viele optionen bietet um sachen zu vereinfachen.
wenn man von den optionen aber nix weiß baut man halt umständlichen code, der viel einfacher erledigt werden könnte.

vielen dank für die schnelle antwort^^
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
K java.util.ConcurrentModificationException problem in der Logik? Quaxli-Tutorial Java Basics - Anfänger-Themen 9
E java.util.ConcurrentModificationException Problem Java Basics - Anfänger-Themen 5
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
BATMAN_2008 Jackson adding additional fields to JSON throws java.util.concurrent.CompletionException: Java Basics - Anfänger-Themen 2
R java.util.Set, CASE_INSENSITIVE_ORDER Java Basics - Anfänger-Themen 6
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
C java.util Timer läuft zu langsam? Java Basics - Anfänger-Themen 1
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
A Java.util.Arrays Java Basics - Anfänger-Themen 15
F java.util.ArrayList Java Basics - Anfänger-Themen 3
B java.util.Date noch zeitgemäß? Java Basics - Anfänger-Themen 6
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
M java.util.scanner Fehler Java Basics - Anfänger-Themen 5
Meeresgott OOP Richtig mit java.util.Property umgehen Java Basics - Anfänger-Themen 22
N java.util.Random - Zwei Zahlen mit festgesetzter Wahrscheinlichkeit? Java Basics - Anfänger-Themen 15
A Vererbungshierachie und java.util.Date Java Basics - Anfänger-Themen 31
W Erste Schritte import java.util.scanner funktioniert nicht Java Basics - Anfänger-Themen 2
I google java-diff-util - Patch abspeichern Java Basics - Anfänger-Themen 1
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
H Repräsentation von DateTime (Joda) in Java Util Date überführen Java Basics - Anfänger-Themen 3
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7
D java.util.NoSuchElementException: No line found Java Basics - Anfänger-Themen 11
D Lesen aus Datei (java.util.NoSuchElementException) Java Basics - Anfänger-Themen 22
S Compiler-Fehler Scanner java.util NoSuchElementExeption Java Basics - Anfänger-Themen 8
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
B ThreadPoolExecutor - import java.util.concurrent Java Basics - Anfänger-Themen 2
R java.util.Random Java Basics - Anfänger-Themen 8
S Methoden Sortieren: java.util.Arrays.useLegacyMergeSort Java Basics - Anfänger-Themen 4
F java.util.scanner wird übersprungen Java Basics - Anfänger-Themen 9
O java.util.Scanner hängt sich auf Java Basics - Anfänger-Themen 5
E Klassen java.util.ArrayList<E> als Generics Java Basics - Anfänger-Themen 16
D java.util.ResourceBundle - exception Java Basics - Anfänger-Themen 4
M Datentypen java.util.Arrays$ArrayList cannot be cast to [Ljava.lang.String; Java Basics - Anfänger-Themen 11
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
M java.util.ArrayList to java.sql.Array Java Basics - Anfänger-Themen 4
D java.util.Currency Java Basics - Anfänger-Themen 2
T java.util.Date Java Basics - Anfänger-Themen 5
J java.util.format => mit String? Java Basics - Anfänger-Themen 2
N java.util.Random Java Basics - Anfänger-Themen 6
N verständnisfrage java.util.Calendar Java Basics - Anfänger-Themen 4
Luk10 Java.util.Scanner Java Basics - Anfänger-Themen 11
H ArrayList über java.util.Scanner füllen Java Basics - Anfänger-Themen 5
P ArrayList<E> in package java.util Java Basics - Anfänger-Themen 4
N java.util.Arrays.sort Warum sind Leerzeichen vor alphabetischen Zeichen sortiert? Java Basics - Anfänger-Themen 12
T import java.util.scanner cannot be resolved Java Basics - Anfänger-Themen 19
D java.util.Currency.getInstance exception mit brit. Pfund Java Basics - Anfänger-Themen 4
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
V java.util.Stack Java Basics - Anfänger-Themen 9
J Java.Util.Properties wrapper class (Review Request) Java Basics - Anfänger-Themen 2
S BITTE UM HILFE HASHTABLE/import java.util.Hashtable in Ecplipse Java Basics - Anfänger-Themen 12
G DateFormat - Datumsformat java.util.Locale interpretieren Java Basics - Anfänger-Themen 2
? java.util.Properties Wert von key mehrfach vorhanden Java Basics - Anfänger-Themen 13
Q java.util.loggging neue datei erstellen Java Basics - Anfänger-Themen 3
L Exception in thread "main" java.util.NoSuchElement Java Basics - Anfänger-Themen 4
hedges Würfelwurf mit java.util.Random ohne 0 Java Basics - Anfänger-Themen 6
W Java.util.Map in Bean wandeln Java Basics - Anfänger-Themen 2
M java.util.Timer und geplante Abarbeitung Java Basics - Anfänger-Themen 2
U java.util.Date to java.sql.Date Java Basics - Anfänger-Themen 2
K Wer kann mir java.util.Hastable erklären. Java Basics - Anfänger-Themen 3
K Probleme mit java.util.hashtable Java Basics - Anfänger-Themen 10
K Zipfile erstellen mit java.util.zip.* Java Basics - Anfänger-Themen 2
J Eclipse und printf und import util.java.scanner; Java Basics - Anfänger-Themen 4
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
K Prob mit java.util.regex.matches-String wird nicht erkannt? Java Basics - Anfänger-Themen 9
T Möchte Charwert 23C° mit java.util.Scanner einlesen macht Pr Java Basics - Anfänger-Themen 2
K java.util.Calendar und Objekt Java Basics - Anfänger-Themen 7
M Seltsames java.util.Date Problem Java Basics - Anfänger-Themen 6
M java.util.Scanner kann nicht aufgelöst werden - warum nicht? Java Basics - Anfänger-Themen 4
RaoulDuke java.util.Date parsen Java Basics - Anfänger-Themen 5
M Source Code von java.util.SubList Java Basics - Anfänger-Themen 2
ff java.util.date Java Basics - Anfänger-Themen 2
O reguläre Ausdrücke bei java.util.regex.Pattern Java Basics - Anfänger-Themen 4
K Keine weitere (java.util.)Scanner Eingabemöglichkeit? Java Basics - Anfänger-Themen 5
A wie implementiere ich java.util.Scanner? Java Basics - Anfänger-Themen 12
D Mit java.util.Arrays.sort die negativen Zahlen hinten Java Basics - Anfänger-Themen 4
C java.util.Timer und wait() oder so was Java Basics - Anfänger-Themen 3
G Leere java.util.List erzeugen Java Basics - Anfänger-Themen 2
S java.awt.List vs. java.util.List Java Basics - Anfänger-Themen 2
D dumme Frage! (was heist 'import java.util.*;' ?) Java Basics - Anfänger-Themen 3
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben