Problem beim Vergleichen von ArrayLists

drakonia666

Grünschnabel
Halloechen zusammen,

inzwischen hat sich mal wieder ein Problem ergeben, welches ich so ohne weiteres nicht alleine geloest bekomme. Ich habe inzwischen schon einiges ausprobiert, aber wohl nicht das Richtige. Ich programmiere noch nicht sehr lange und beschaeftige mich im Moment mit ArrayLists. Zum Hintergrund des Problems: Ich habe eine ArrayList, die verschiedene Mannschaftsbegegnungen (mannschaftsPaarungen) einer Sportliga enthaelt (Mannschaftsnummer A und Mannschaftsnummer B). Da ich allerdings diese Mannschaftsnummer der Ubersichtlichkeit halber fuer die Ausgabe wieder in einen Mannschaftsnamen aendern moechte, wollte ich gern den Namen aus einer 2. ArrayList (listeDerMannschaften) mit Objekten vom Typ Mannschaft auslesen. Die Objekte vom Typ Mannschaft enthalten diverse Attribute, u.a. die Mannschaftsnummer, den Namen, Herkunft etc. In beiden Listen sind also die Mannschaftsnummern hinterlegt. Im Array mit den Mannschaften immer nur jeweils 1x (da jede Mannschaft eine eindeutige Nummer hat). In der Liste mit den Begegnungen kommen die Mannschaftsnummer mehrfach vor.

Die Ausgabe der ersten Liste sieht wie folgt aus:

3-1
2-4
2-1
4-3
2-3
1-4

Ich habe 4 Mannschaften (test1, test2, test3, test4) in meiner Mannschaftsliste, die fuer Begegnungen zusammengewuerfelt werden, wobei oben stehende Liste herauskommt. Die Ausgabe ist korrekt und nichts ist doppelt. So weit so gut. Jetzt habe ich (mit meinem begrenzten Wissen) versucht, das Ganze mit der 2. Liste zu vergleichen. Dazu habe ich folgenden Code verwendet:

Java:
String heimMannschaft = "heim";
String gastMannschaft = "gast";
		
		for(Spiel spiele : mannschaftsPaarungen) {
			for(Mannschaft mannschaft : listeDerMannschaften) {
				if (spiele.getMannschaftA() == mannschaft.getMannschaftsNummer()) {
					heimMannschaft = mannschaft.getMannschaftsName();
				}
				if (spiele.getMannschaftB() == mannschaft.getMannschaftsNummer()) {
					gastMannschaft = mannschaft.getMannschaftsName();
				}
				System.out.println(heimMannschaft + " - " + gastMannschaft);
			}
}

Dummerweise scheint da irgendwas nicht zu stimmen, denn die Ausgabe ist ploetzlich voelliger Murks:

heim - test1
heim - test1
test3 - test1
test3 - test1
test3 - test1
test2 - test1
test2 - test1
test2 - test4
test2 - test1
test2 - test1
test2 - test1
test2 - test1
test2 - test1
test2 - test1
test2 - test3
test4 - test3
test4 - test3
test2 - test3
test2 - test3
test2 - test3
test1 - test3
test1 - test3
test1 - test3
test1 - test4

Vielleicht habe ich auch den falschen Loesungsansatz oder es gibt wesentlich elegantere Methoden als die von mir benutzte. Ich waere euch sehr dankbar, wenn ihr mir bei diesem Problem weiterhelfen koenntet. Vielen Dank!

LG
drakonia666


EDIT: *narf* Ich sollte mal mehr schlafen.... Da sieht man den Wald trotz der ganzen Baeume auch wieder. Die Schleife kann so natuerlich nicht funktionieren, da die Ausgabe an der falschen Stelle war. Richtigerweise muss die Ausgabe natuerlich vor der letzten geschweiften Klammer stehen...
 
Zuletzt bearbeitet:
Gibt es einen bestimmten Grund, warum du in der ersten ArrayList nicht direkt Mannschaft-Objekte verwendest? An der Performance kann es ja nicht liegen, bei nur vier Mannschaften. Dann könntest du nämlich direkt aus den Objekten die Mannschaftsnamen auslesen.
 
Hm nein eigentlich hat das keinen bestimmten Grund. Dachte mir nur, dass ich Spiele und Mannschaften voneinander trenne (also die Objekte), so dass die Liste der Begegnungen moeglichst uebersichtlich bleibt. Ansonsten muesste ich in der Liste ja z.B. Spiel1: Mannschaft mannschaftA, Mannschaft mannschaftB speichern. Wie gesagt, ich beschaeftige mich erst seit kurzem mit ArrayLists und habe von (sinnvoller) Strukturierung oder gar den Moeglichkeiten noch nicht so die Ahnung... Da es sich um eine Uebungsaufgabe handelt und die Vorgabe vorsieht, dass in der Klasse Spiel nur MannschaftA und MannschaftB hinterlegt sind, dachte ich mir dass das so hinhaut. Oder koennte ich dann dort bei den Attributen direkt auf Mannschafts-Objekte verweisen?
 
Hi,

mache Dir am besten zuerst mal eine einfache Skizze für die Struktur. Weg vom Code, nur Struktur.

Tipp: Denke nicht "ich habe 2 Mannschaften und ein Spiel".
Denke eher

-Es gibt Spiele (allgemein)
- Woraus setzet sich ein Spiel zusammen =>
- n Mannschaftsobjekte, Dauer, Bedingungen
- Mannschaftsobjekt hat n Spieler

Usw. usw.. Diese Dinge bringst Du in Beziehung untereinander und bildest dann die Beziehung ab.

Es sollte Dir zunächst ganz egal sein, ob Du nun ArrayLists oder oder verwendest. Weg vom technischen. Denke ganz grundsätzlich und abstrakt.
Technik kommt dann, wenn Du dir über die wesentlichen Punkte ein Bild gemacht hast.

Die Beziehungen sind wichtig, wer mit wem, wer zu wem etc..

Viele Grüße, Tim
 
Zuletzt bearbeitet:
:D ist wahrscheinlich die Hausaufgabe im Informatik LK.

Naja hoffen wir für die beiden das der Prüfer kein goolge bedienen kann :p
 
Zurück