J
javalover
Gast
Hi,
Ich habe 2 Klassen Person und Vorlesung:
Person sieht so aus.
Vorlesung sieht so aus :
dann geb ich das ganze mit der Treiber klasse aus:
Mein Problem ist die Zeile
System.out.println("Person1 soll Oleg : "+it.next().getName()); wo bei it ist ein Iterator ist. Wenn ich so ausgeben lasse spuckt er mir Fehlermeldungen.
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at Ueb3Treiber.main(Ueb3Treiber.java:29)
Was ist der Unterschied wenn ich
vorlesung1.getPersonliste().listIterator(0).next().getName());
so mache oder mit einem Iterator mache
also so
Iterator<Person_Ueb3> it = vorlesung1.getPersonliste().iterator();
System.out.println("Person1 soll Oleg : "+it.next().getName());
was mache ich falsch ?
dankee
Ich habe 2 Klassen Person und Vorlesung:
Person sieht so aus.
Code:
import java.util.ArrayList;
public class Person_Ueb3 {
private String mName ;
Vorlesung_Ueb3 mVorlesung;
ArrayList<Vorlesung_Ueb3> Vorlesungliste = new ArrayList<Vorlesung_Ueb3>() ;
public Person_Ueb3(String name) {
super();
mName = name;
}
public void setVorlesung(Vorlesung_Ueb3 vorlesung){
mVorlesung= vorlesung ;
vorlesung.mPerson =this;
Vorlesungliste.add(mVorlesung);
vorlesung.Personliste.add(this);
}
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
public ArrayList<Vorlesung_Ueb3> getVorlesungsliste(){
return Vorlesungliste;
}
}
Vorlesung sieht so aus :
Code:
import java.util.ArrayList;
public class Vorlesung_Ueb3 {
private String mTitel;
private int mSemester ;
Person_Ueb3 mPerson;
ArrayList<Person_Ueb3> Personliste = new ArrayList<Person_Ueb3>() ;
public Vorlesung_Ueb3(String titel, int semester) {
super();
mTitel = titel;
mSemester = semester;
}
public void setPerson(Person_Ueb3 p){
mPerson= p ;
p.mVorlesung = this ;
Personliste.add(mPerson);
p.Vorlesungliste.add(this);
}
public String getTitel() {
return mTitel;
}
public void setTitel(String titel) {
mTitel = titel;
}
public int getSemester() {
return mSemester;
}
public void setSemester(int semester) {
mSemester = semester;
}
public ArrayList<Person_Ueb3> getPersonliste(){
return Personliste;
}
}
dann geb ich das ganze mit der Treiber klasse aus:
Code:
import java.util.ArrayList;
import java.util.Iterator;
public class Ueb3Treiber {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Vorlesung_Ueb3 vorlesung1 = new Vorlesung_Ueb3("Prog2",1);
Person_Ueb3 esan = new Person_Ueb3("Esan");
Person_Ueb3 oleg = new Person_Ueb3("Oleg");
Person_Ueb3 sofia = new Person_Ueb3("Sofia");
Person_Ueb3 tom = new Person_Ueb3("Tom");
Person_Ueb3 michi = new Person_Ueb3("Michi");
// Iterator<Person_Ueb3> it = vorlesung1.getPersonliste().iterator();
vorlesung1.setPerson(esan);
vorlesung1.setPerson(oleg);
vorlesung1.setPerson(sofia);
vorlesung1.setPerson(tom);
vorlesung1.setPerson(michi);
System.out.println("Größe soll 5 : "+vorlesung1.getPersonliste().size());
System.out.println("Titel soll Prog2 : "+vorlesung1.getTitel());
// System.out.println("Person1 soll Esan : "+vorlesung1.getPersonliste().iterator().next().getName());
System.out.println("Person1 soll Esan : "+vorlesung1.getPersonliste().listIterator(0).next().getName());
System.out.println("Person1 soll Oleg : "+vorlesung1.getPersonliste().listIterator(1).next().getName());
// System.out.println("Person1 soll True : "+it.hasNext());
// System.out.println("Person1 soll Oleg : "+it.next().getName());
System.out.println("Esan soll 1 : "+esan.getVorlesungsliste().size());
System.out.println("Vorlesung soll Prog2 : "+esan.getVorlesungsliste().iterator().next().getTitel());
}
}
Mein Problem ist die Zeile
System.out.println("Person1 soll Oleg : "+it.next().getName()); wo bei it ist ein Iterator ist. Wenn ich so ausgeben lasse spuckt er mir Fehlermeldungen.
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at Ueb3Treiber.main(Ueb3Treiber.java:29)
Was ist der Unterschied wenn ich
vorlesung1.getPersonliste().listIterator(0).next().getName());
so mache oder mit einem Iterator mache
also so
Iterator<Person_Ueb3> it = vorlesung1.getPersonliste().iterator();
System.out.println("Person1 soll Oleg : "+it.next().getName());
was mache ich falsch ?
dankee