Warum funktionirt contains bei ArrayList nicht?

nieswand
Mausschubser
Mausschubser
Beiträge: 60
Registriert: 28. Apr 2007 15:13

Warum funktionirt contains bei ArrayList nicht?

Beitrag von nieswand »

Hallo!

Ich habe ein kleines Problem. Ich benutze eine ArrayList in meinem Programm, um dort bereits besuchte Nachbarn zu speichern.
Nachher will ich dann natürlich überprüfen, ob ein bestimmter Nachbar darin ist und natürlich mit contains.

Folgendes habe ich mal ausprobiert und bekomme als Ausgabe in der Console false.Woran liegt das?

ArrayList besuchtenachbarn = new ArrayList();
besuchtenac.add(new int[]{1, 0});

System.out.println(besuchtenac.contains(new int[]{1, 0}));

Oder gibt es eine andere Möglichkeit auf Elemente in der Liste zu prüfen?

kde
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 123
Registriert: 19. Dez 2006 10:29
Kontaktdaten:

Beitrag von kde »

dein erstes array objekt ist ein anderes als dein zweites. es sind zwei völlig verschiedene instanzen, lediglich mit dem gleichen inhalt. es kann daher nur so funktionieren:

ArrayList besuchtenachbarn = new ArrayList();
int[] a = new int[]{1, 0};
besuchtenachbarn.add(a);

System.out.println(besuchtenachbarn.contains(a));

besser die liste auch noch generic erstellen:
ArrayList<int[]> besuchtenachbarn = new ArrayList<int[]>();

also entweder wie oben geschrieben nutzen oder schreib dir eine neue contains methode, die auf gleiche werte checkt.

die falsch geschriebenen variablennamen hab ich jetzt als tippfehler betrachtet.
Zuletzt geändert von kde am 4. Mai 2007 15:18, insgesamt 2-mal geändert.

shaddar
Neuling
Neuling
Beiträge: 6
Registriert: 15. Nov 2006 19:33

Beitrag von shaddar »

Wenn der Code 1:1 so stimmt dürfte das Hauptproblem eher ein schriftliches sein .

ArrayList besuchtenachbarn = new ArrayList();
besuchtenac.add(new int[]{1, 0}); <--- das dürfte er nicht kennen, da ihm das "hbarn" für den vollständigen Objektnamen fehlt

Allerdings müsste er da eher ne Exception schmeißen würde ich mal behaupten, da das Objekt "besuchtenac" eigtl nicht existiert.

Wenn das nicht der Fall ist ignorier meinen Post einfach ^^

MfG

PS : *grml* Da war wohl wer schneller ^^

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Warum benutzt du nicht einfach ein 2D-Array (Matrix) von booleans, um schon besuchte Felder zu markieren...?

Christoph B
Computerversteher
Computerversteher
Beiträge: 370
Registriert: 15. Okt 2006 18:28
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Christoph B »

mach ich auch (Y) aber du musst ja leider auch die reinfolge der besuchten felder später noch zurückgeben, daher wirste um vector / arraylist un ähnliches wohl kaum herum kommen

Benutzeravatar
HerrDerFlammen
Mausschubser
Mausschubser
Beiträge: 79
Registriert: 16. Okt 2006 17:30
Wohnort: Dreieich
Kontaktdaten:

Beitrag von HerrDerFlammen »

Christoph B hat geschrieben:mach ich auch (Y) aber du musst ja leider auch die reinfolge der besuchten felder später noch zurückgeben, daher wirste um vector / arraylist un ähnliches wohl kaum herum kommen
Also ich mach alles nur mit 2 Arrays, und da ich durch bin, denke ich mal,man kommt um Vector/Arraylist drumrum^^
Das Lehren soll so sein, dass das Dargebotene als wertvolles Geschenk und nicht als saure Pflicht empfunden wird.
(Albert Einstein)

maikg2
Mausschubser
Mausschubser
Beiträge: 95
Registriert: 18. Okt 2005 22:29
Wohnort: Darmstadt

Beitrag von maikg2 »

Ich vermute mal das dann deine zwei Arrays mit maximaler Länge initialisiert sind und so mehr Speicher benötigen als ein dynamscher Vector/Arraylist. Bei diesem Praktikum ist es eher nebensächlich, aber später wird dies vielleicht irgendwann relevant sein.

Benutzeravatar
HerrDerFlammen
Mausschubser
Mausschubser
Beiträge: 79
Registriert: 16. Okt 2006 17:30
Wohnort: Dreieich
Kontaktdaten:

Beitrag von HerrDerFlammen »

maikg2 hat geschrieben:Ich vermute mal das dann deine zwei Arrays mit maximaler Länge initialisiert sind und so mehr Speicher benötigen als ein dynamscher Vector/Arraylist. Bei diesem Praktikum ist es eher nebensächlich, aber später wird dies vielleicht irgendwann relevant sein.
Das stimmt so nicht! Die Array größe wird durch den längsten möglich Weg beschränkt.
Das Lehren soll so sein, dass das Dargebotene als wertvolles Geschenk und nicht als saure Pflicht empfunden wird.
(Albert Einstein)

maikg2
Mausschubser
Mausschubser
Beiträge: 95
Registriert: 18. Okt 2005 22:29
Wohnort: Darmstadt

Beitrag von maikg2 »

Möglich das ich dich falsch versteh, aber der längste mögliche Weg ist doch über alle Felder auf der Karte zu gehen?

yagami
Mausschubser
Mausschubser
Beiträge: 72
Registriert: 5. Okt 2006 03:02

Beitrag von yagami »

darf man Arraylist oder einfach listen in dem Program verwenden?

yourmaninamsterdam
Nerd
Nerd
Beiträge: 681
Registriert: 26. Okt 2006 14:04
Kontaktdaten:

Beitrag von yourmaninamsterdam »

ArrayList ist Teil der Standardbibliothek und darf daher auch verwendet werden.

Antworten

Zurück zu „Archiv“