Hey folks,
Ich möchte eine ArrayListe umdrehen und habe dafür folgende Methode geschrieben:
Kurze Erläuterung: Die Klasse modelliert einen Zug. Da die Lok immer am Anfang ist, also auf der Position 0, fange ich mit j = 1 statt j = 0 an. Totalwagenclone ist ein Attribut, welches die Anzahl der Wagen beinhaltet (immer wenn ein neuer Wagen erstellt wird, geht Totalwagenclone++). "clone" deshalb, weil ich das originale Attribut noch woanders brauche und es darum nicht verändern kann.
Train ist die Liste für den gesamten aktuell erzeugten Zug, sprich Wagen + Lok.
Die Idee für die Methode ist Schritt für Schritt die Wagen hinter der Lok in ihrer Reihenfolge umzukehren, sprich der letzte Wagon soll der Erste sein, etc.
Also will ich an der Position j = 1 (da die Lok ja bleibt) anfangen und sie mit dem letzten Wagon ersetzten, indem ich wagenliste.get(totalwagenclone-1) ausführe. Dann sollte der letzte Wagon an der Stelle 1 sein. Sobald das getan ist erhöhe ich j um 1, damit ich an die nächste Stelle im train komme und senke totalwagenclone um 1, damit ich an die Stelle vor dem letzten Wert komme. Jetzt sollte das ganze von vorne losgehen, sprich das Element von train an der Stelle 2 wird mit dem vorletzten Wagon aus der wagenliste ersetzt. Und immer so weiter... Sobald totalwagenclone nicht mehr >= 0 ist, hört das ganze auf (da er dann ja alle Wagons einmal durchgegangen ist) und liefert train zurück. Nun sollte die train Liste den umgedrehten Zug vollständig enthalten.
Leider funktioniert das ganze aber nicht und bei einem System.out.println nach dem Aufruf von revert() kommt die nicht umgedrehte Liste wieder heraus. Ich verstehe das einfach nicht... Hat jemand vielleicht eine Idee woran das liegen könnte?
Ich möchte eine ArrayListe umdrehen und habe dafür folgende Methode geschrieben:
Java:
public List<String> revert()
{
int j = 1;
while (totalwagenclone >= 0)
{
train.set(j, wagenliste.get(totalwagenclone-1));
j++;
totalwagenclone--;
}
return train;
}
Kurze Erläuterung: Die Klasse modelliert einen Zug. Da die Lok immer am Anfang ist, also auf der Position 0, fange ich mit j = 1 statt j = 0 an. Totalwagenclone ist ein Attribut, welches die Anzahl der Wagen beinhaltet (immer wenn ein neuer Wagen erstellt wird, geht Totalwagenclone++). "clone" deshalb, weil ich das originale Attribut noch woanders brauche und es darum nicht verändern kann.
Train ist die Liste für den gesamten aktuell erzeugten Zug, sprich Wagen + Lok.
Die Idee für die Methode ist Schritt für Schritt die Wagen hinter der Lok in ihrer Reihenfolge umzukehren, sprich der letzte Wagon soll der Erste sein, etc.
Also will ich an der Position j = 1 (da die Lok ja bleibt) anfangen und sie mit dem letzten Wagon ersetzten, indem ich wagenliste.get(totalwagenclone-1) ausführe. Dann sollte der letzte Wagon an der Stelle 1 sein. Sobald das getan ist erhöhe ich j um 1, damit ich an die nächste Stelle im train komme und senke totalwagenclone um 1, damit ich an die Stelle vor dem letzten Wert komme. Jetzt sollte das ganze von vorne losgehen, sprich das Element von train an der Stelle 2 wird mit dem vorletzten Wagon aus der wagenliste ersetzt. Und immer so weiter... Sobald totalwagenclone nicht mehr >= 0 ist, hört das ganze auf (da er dann ja alle Wagons einmal durchgegangen ist) und liefert train zurück. Nun sollte die train Liste den umgedrehten Zug vollständig enthalten.
Leider funktioniert das ganze aber nicht und bei einem System.out.println nach dem Aufruf von revert() kommt die nicht umgedrehte Liste wieder heraus. Ich verstehe das einfach nicht... Hat jemand vielleicht eine Idee woran das liegen könnte?