Hallo,
grundsätzlich weiß ich schon, wie ArrayLists funktionieren. Aber in diesem Fall weiß ich einfach nicht, wo der Fehler liegt. Ich hoffe ihr könnt mir weiterhelfen
Mein Programm soll wenn es fertig ist Touren aus einer csv-Datei einlesen und am Ende grafisch darstellen. Die Grundlagen dafür sind alle schon gelegt.
Meine Touren werden alle in einer ArrayList tourenliste abgespeichert. Jedes Element dieser ArrayList besteht aus einem Objekt der Klasse CTour. In diesem Objekt werden die Eigenschaften der Tour abgespeichert. Jede Tour hat eine Tournummer, eine Tourfarbe (in der die Tour später grafisch dargestellt wird), eine Tourlänge und eine ArrayList knotenTour, in der die Punkte abgespeichert werden, aus denen die Tour besteht.
Das ganze habe ich dann mal im Kleinen beispielhaft umgesetzt.
dazu hier die verwendete Klasse CTour:
Dies ist dann die Ausgabe:
0 [6] Color {255, 10, 30}
1 [6] Color {10, 10, 10}
...eigentlich sollte aber in der ersten Zeile anstatt der 6 eine 5 stehen
Egal, was ich versuche, in allen Objekten wird die Eigenschaft tourKnoten immer mit der letzten ArrayList hilfsliste überschrieben. In jedem Objekt der Klasse Tour ist also die gleiche folge von Punkten abgespeichert.
Ist es überhaupt möglich, in einer ArrayList Objekte abzuspeichern, in deren Eigenschaften wiederum ArrayLists enthalten sind?
LG
grundsätzlich weiß ich schon, wie ArrayLists funktionieren. Aber in diesem Fall weiß ich einfach nicht, wo der Fehler liegt. Ich hoffe ihr könnt mir weiterhelfen
Mein Programm soll wenn es fertig ist Touren aus einer csv-Datei einlesen und am Ende grafisch darstellen. Die Grundlagen dafür sind alle schon gelegt.
Meine Touren werden alle in einer ArrayList tourenliste abgespeichert. Jedes Element dieser ArrayList besteht aus einem Objekt der Klasse CTour. In diesem Objekt werden die Eigenschaften der Tour abgespeichert. Jede Tour hat eine Tournummer, eine Tourfarbe (in der die Tour später grafisch dargestellt wird), eine Tourlänge und eine ArrayList knotenTour, in der die Punkte abgespeichert werden, aus denen die Tour besteht.
Das ganze habe ich dann mal im Kleinen beispielhaft umgesetzt.
Java:
public void datenErfassenTouren_neu(ArrayList<CTour>tourliste){
ArrayList<Integer>tourneu=new ArrayList<Integer>(); // Hilfsliste, in der die einzelnen Touren abgespeichert werden
tourneu.add(5); // Ein Tourpunkt wird an die Hilfsliste angefügt
CTour tour=new CTour(0,tourneu, new Color(Display.getCurrent(),255,10,30),0); // Ein neues tour Objekt wird erstellt
tourliste.add(tour); // das neue Objekt wird an die tourliste angefügt, in der alle Touren abgespeichert werden
System.out.println(tourliste.get(0).getTourKnoten()); // hier Ausgabe von Tour noch richtig (5)
tourneu.clear(); // Hilfsliste wird geleert
tourneu.add(6); // neuer Punkt wird an Hilfsliste angefügt
CTour tour2=new CTour(1,tourneu,new Color(Display.getCurrent(),10,10,10),0); // neues tour Objekt wird erstellt
tourliste.add(tour2); // das neue Objekt wird auch an die tourliste angefügt
System.out.println(tourliste.get(0).getTourNummer()+" "
+tourliste.get(0).getTourKnoten()+" "+tourliste.get(0).getTourFarbe()); // hier Ausgabe falsch : 6 statt 5
System.out.println(tourliste.get(1).getTourNummer()+" "
+tourliste.get(1).getTourKnoten()+" "+tourliste.get(1).getTourFarbe()); // hier Ausgabe richtig: 6
}
dazu hier die verwendete Klasse CTour:
Java:
public class CTour{
private ArrayList <Integer> tourKnoten=new ArrayList<Integer>(); // hier werden alle Knoten der Tour abgespeichert
private int tourNummer; // spezifische Tournummer
private Color tourFarbe; // Farbe der Tour
private int tourLaenge; // Tourlaenge
public CTour(int nummer,ArrayList<Integer>tourneu, Color farbe, int laenge){
tourNummer=nummer;
tourKnoten=tourneu;
tourFarbe=farbe;
tourLaenge=laenge;
}
public void setTourKnoten(ArrayList<Integer>tourneu){
tourKnoten=tourneu;
}
public ArrayList<Integer> getTourKnoten(){
return tourKnoten;
}
public void setTourNummer(int nummer) {
this.tourNummer = nummer;
}
public int getTourNummer() {
return tourNummer;
}
public void setTourFarbe(Color farbe) {
this.tourFarbe = farbe;
}
public Color getTourFarbe() {
return tourFarbe;
}
public void setTourLaenge(int laenge) {
this.tourLaenge = laenge;
}
public int getTourLaenge() {
return tourLaenge;
}
}
Dies ist dann die Ausgabe:
0 [6] Color {255, 10, 30}
1 [6] Color {10, 10, 10}
...eigentlich sollte aber in der ersten Zeile anstatt der 6 eine 5 stehen
Egal, was ich versuche, in allen Objekten wird die Eigenschaft tourKnoten immer mit der letzten ArrayList hilfsliste überschrieben. In jedem Objekt der Klasse Tour ist also die gleiche folge von Punkten abgespeichert.
Ist es überhaupt möglich, in einer ArrayList Objekte abzuspeichern, in deren Eigenschaften wiederum ArrayLists enthalten sind?
LG
Zuletzt bearbeitet: