Prüfen ob Element in ArrayList

Glühwürmchen

Mitglied
Huhu :)

Also es geht um folgenes: Ich hab ein Kartenspiel erstellt und will jetzt Prüfen ob eine bestimmte Karte in meinem Stapel enthalten ist.
Jedoch wird mir immer geliefert, dass die Karte nicht enthalten ist. Ich habe bisher 2 Versionen:

Java:
public void pruefung(Typ farbe, Wert wert){
		Card2 Karte = new Card2(farbe, wert);
		if(Stapel.contains(Karte)){
			System.out.println("Die Karte " + Karte + " ist im Stapel enthalten.");
		}
		else System.out.println("Die Karte " + Karte + " ist nicht im Stapel enthalten.");
	}

Java:
public void pruefung(Typ farbe, Wert wert){
		Card2 Karte = new Card2(farbe, wert);
		boolean kent = false;
		for(int i=0; i<Stapel.size(); i++){
			if((Stapel.get(i)).equals(Karte)){
				kent = true;
			}
		}
		if(kent == false){
			System.out.println("Die Karte " + Karte + " ist nicht im Stapel enthalten.");
		}
		else System.out.println("Die Karte " + Karte + " ist im Stapel enthalten.");
	}

Jedoch funktioniert beides nicht. Mit contains() will es nicht und mit equals() auch nicht. Und mehr hab ich nicht im Internet gefunden... vor allem laut dem was ich im Internet gefunden habe, müsste es eigentlich mit contains() funktionieren, aber leider will es nicht. Also was kann ich jetzt noch probieren?
 
A

awda23ws23

Gast
Wie kann dein Stapel eine gerade neu erzeugte Karte als Javaobjekt kennen, die dem Stapel übehaupt nicht hinzugefügt wurde?
 

Glühwürmchen

Mitglied
Achso, das hätt ich vielleicht noch erwähnen sollen ^^
Also ich hab noch das hier:

Java:
public void deckErstellen(){
		for (Typ farbe : Typ.values()){                              
	       for (Wert wert : Wert.values()){
	             Stapel.add(new Card2(farbe, wert));
	       }
		}
	}

Und in der Main hab ich ja schon ein komplettes Deck erstellt und will dann die Methode benutzen um zu prüfen ob eine bestimmte Karte enthalten ist.

Ich hab übrigens keine equals-Methode selbst geschrieben, sollte ich das wohl noch extra machen? Funktionierts dann?
 

Volvagia

Top Contributor
Das ist ein imho sehr schlechter Weg. Hast du equals überschrieben? Ansonst kannst du nur Referenzgleiche Objekte finden (Basisimplementierung.)

€: Letzte Zeile überlesen. :oops:

Laut Javadoc: (o==null ? e==null : o.equals(e)).
Equal überprüft im Default, ob die beiden Instanzen == sind. Das funktioniert nur folgendermaßen:

Java:
Card2 card = new Card2(farbe, wert);
list.add(card);
System.out.println(list.contains(card));

True.

Java:
Card2 card = new Card2(farbe, wert);
list.add(card);
System.out.println(list.contains(new Card2(farbe, wert)));

False.

Denn die beiden Karten enthalten standartgemäß die selben Werte, sind aber nicht die selben Instanzen, wonach geprüft wird.
 
Zuletzt bearbeitet:
A

awda23ws23

Gast
Wenn du mit

Card2 Karte = new Card2(farbe, wert);

eine neue Karte erzeugst, isrt dieses Javaobjekt nicht in der Liste enthalten (Fall 1) und die equals Methode funktioniert nur wenndu sie überschrieben hast (Fall 2)
 

Dekker

Bekanntes Mitglied
Wenn du equals nicht selbst implementierst, dann vergleicht java bei Objekten, ob die Objekt-ID gleich ist. Da die Karte im Stapel und die neu erzeugte Karte nicht die selbe ID haben, ist sie nicht im Stapel auffindbar.

Du musst also die Methode equals selbst implementieren.

E: Notiz an mich, nur 1 Tab zur gleichenzeit öffnen und durchlesen, dann kommen die Antworten nicht viel zu spät).
 

Glühwürmchen

Mitglied
Wohoo~ ich habs hinbekommen :D

Ich hab das jetzt so gemacht:
Java:
	public boolean equals(Card2 Karte, Card2 Karte2){
		if (Karte2.getWert() == Karte.getWert()){
			if (Karte2.getTyp() == Karte.getTyp()){
			return true;
			}
			else return false;
		}
		else return false;

Und nun liefert es mir immer das richtige Ergebnis :D
 

Volvagia

Top Contributor
Java:
public boolean equals(Object obj)
{
	if(!(obj instanceof Card2))
		return(false);
	Card2 cast = (Card2)obj;
	return(getWert() == cast.getWert() && getTyp() == cast.getTyp());
}

So implementiert kannst du auch contains verwenden. Ich würde dir aber raten, das Design nochmal zu überdenken. Eine neue Karte zu erzeugen nach dem der Stapel bereits befüllt wurde ist komisch und unrealistisch.
 

Glühwürmchen

Mitglied
So implementiert kannst du auch contains verwenden. Ich würde dir aber raten, das Design nochmal zu überdenken. Eine neue Karte zu erzeugen nach dem der Stapel bereits befüllt wurde ist komisch und unrealistisch.

Hmm~ naja, aber in meiner Aufgabe stand, ich soll eine Methode schreiben, der man eine Karte als Parameter übergibt und sie soll dann schauen ob diese auch im Stapel vorkommt. Und wenn ich da dann nicht ein neues Objekt vom Typ Card2 erstellt hab, dann hats nicht funktioniert.
 
A

awda23ws23

Gast
casten zu Card2

Wir wollen hoffen, dass du keine Steuerung für Herzschrittmacher o.a. programmierst. Ach egal wie schnell, Hauptsache überhaupt.....
 

Glühwürmchen

Mitglied
casten zu Card2

Wir wollen hoffen, dass du keine Steuerung für Herzschrittmacher o.a. programmierst. Ach egal wie schnell, Hauptsache überhaupt.....

Mit Casten kenn ich mich noch garnicht aus, ehrlich gesagt ^^
Muss ich mich noch einlesen ^^

Und ich muss das hier nur für die Uni machen und wenn ich dann eben nicht die volle Punktzahl bekomme, dann ists auch okay... find ich :)
Und nein, ich werd nie was für Herzschrittmacher programmieren xD
 

Volvagia

Top Contributor
Was hat nichts funktioniert? Es hat ja allgemein nicht funktioniert. Die Liste kennt die Karte, und die Methode kennt die Karte, und es wird geschaut ob beide Karten ident sind. Wenn du ein Deck aus 52 Karten hast, und eine neue Karte aus einen anderen nimmst, wird diese Karte auch nicht im ursprünglichen Deck vorhanden sein, geht ja gar nicht. ^^
Du kannst nur schauen, ob eine Karte mit dem selben Wert und der Farbe vorkommt, was die equals macht. Aber nur zum prüfen ob eine Karte dabei ist hohlt man sich ja kein neues Kartenspiel, sondern verwendet eine Karte aus den ursprünglichen Karten zum Vergleich. (Recht komisch erklärt, aber ich hoffe es ist verständlich.)
 

Glühwürmchen

Mitglied
Was hat nichts funktioniert? Es hat ja allgemein nicht funktioniert. Die Liste kennt die Karte, und die Methode kennt die Karte, und es wird geschaut ob beide Karten ident sind. Wenn du ein Deck aus 52 Karten hast, und eine neue Karte aus einen anderen nimmst, wird diese Karte auch nicht im ursprünglichen Deck vorhanden sein, geht ja gar nicht. ^^
Du kannst nur schauen, ob eine Karte mit dem selben Wert und der Farbe vorkommt, was die equals macht. Aber nur zum prüfen ob eine Karte dabei ist hohlt man sich ja kein neues Kartenspiel, sondern verwendet eine Karte aus den ursprünglichen Karten zum Vergleich. (Recht komisch erklärt, aber ich hoffe es ist verständlich.)

Ja es ist verständlich :)
Also war das mein Denkfehler bei der ersten Idee. Nur hatte ich es eben so verstanden, dass ich ein Deck habe. Dann zieht man ein paar Karten. Und dann sagt man, dass man wissen will, ob eine bestimmte Karte noch enthalten ist. Im Grunde könnte man es so auch über nen Umweg machen fällt mir grad ein... also indem man schaut wie groß der Stapel ist, wenn noch 52 Karten drin sind, dann muss sie noch drin sein und sonst schaut man ob man die Karte schon gezogen hat. Nur das dann zu implementieren... das ist mir zu hoch, da wüsst ich nicht wie und ich werds auch nich alles nochmal umschreiben xD

Du übergibst keine Karte, sondern 2 Parameter, die du dann zu einer Karte machst.

Okay, seh ich ein. Aber ich habs so gemacht, weil ichs anders nicht kann xD
 

XHelp

Top Contributor
Okay, seh ich ein. Aber ich habs so gemacht, weil ichs anders nicht kann xD

Du hast doch jetzt:
Java:
public void pruefung(Typ farbe, Wert wert){
        Card2 Karte = new Card2(farbe, wert);
...
}
Das schreibst du einfach um in:
Java:
public void pruefung(Card2 karte){ //Variablen klein schreiben, in der restlichen Methode auch
...
}
Und dann passt es schon. Dann rufst du es eben nicht als
Code:
pruefung(Typ.Pik, Wert.Ass)
auf, sondern als
Code:
pruefung(new Card2(Typ.Pik, Wert.Ass))
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
B Sudoku prüfen Java Basics - Anfänger-Themen 13
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
G Compiler-Fehler Auf Anagramm prüfen Java Basics - Anfänger-Themen 1
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
C Klassen Reguläre Ausdrücke auf Gleichheit prüfen Java Basics - Anfänger-Themen 5
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
R Auf Nachkommastellen prüfen. Java Basics - Anfänger-Themen 2
P Argumente auf plausibilität prüfen... Java Basics - Anfänger-Themen 8
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
B String mit Emailadresse prüfen Java Basics - Anfänger-Themen 11
E 2D Arrays auf Ungleichheit prüfen! Java Basics - Anfänger-Themen 5
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
N Compiler-Fehler Iban prüfen Java Basics - Anfänger-Themen 7
J Prüfen ob Arrays nur mit einem Wert belegt sind Java Basics - Anfänger-Themen 3
M String prüfen Java Basics - Anfänger-Themen 7
E Prüfen ob Sammlung gesetzt wurde - Lebensmittelsammlung Java Basics - Anfänger-Themen 8
H Zufällig generierte Zahlen auf Eingabe prüfen Java Basics - Anfänger-Themen 5
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
S String auf Pallindromeigenschaft prüfen Java Basics - Anfänger-Themen 15
AssELAss Datums-Objekt prüfen ob im gleichen Monat? Java Basics - Anfänger-Themen 5
Screen Input/Output Wie prüfen ob Stream1 in Stream2 enthalten ist (on-the-fly) ? Java Basics - Anfänger-Themen 5
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
I Prüfen ob Webseite existiert Java Basics - Anfänger-Themen 3
Z Inputs prüfen Java Basics - Anfänger-Themen 6
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K zwei Rechtecke auf Berührung prüfen Java Basics - Anfänger-Themen 2
G String auf Format prüfen Java Basics - Anfänger-Themen 3
J Eingabewert übergeben und prüfen von showInputDialog Java Basics - Anfänger-Themen 4
L 6stellige Zufallszahlen erzeugen & auf einzigartigkeit prüfen Java Basics - Anfänger-Themen 3
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
M Prüfen, ob Zeichen eine Zahl ist Java Basics - Anfänger-Themen 3
M Punkt auf eine Farbe prüfen Java Basics - Anfänger-Themen 8
C Datentypen Prüfen of eine Zahl Quadratzahl ist Java Basics - Anfänger-Themen 2
K Eindimensionalen Array prüfen Java Basics - Anfänger-Themen 5
M Konstruktor auf null prüfen, Arrays Java Basics - Anfänger-Themen 9
O Prüfen ob ein String den selben Namen hat wie eine Booleanreihe? Java Basics - Anfänger-Themen 17
J Arrays prüfen und über if Bedingung ausgeben Java Basics - Anfänger-Themen 15
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
L Erste Schritte Einträge in ArrayList prüfen Java Basics - Anfänger-Themen 4
S OOP long prüfen Java Basics - Anfänger-Themen 5
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
Rayo Eingelesene Ascii Zahlen wie normale Zahlen prüfen Java Basics - Anfänger-Themen 4
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
N Prüfen ob Objekt existiert Java Basics - Anfänger-Themen 6
I Mehrere ArrayLists mit einer for( : ) Schleife auf Inhalt prüfen Java Basics - Anfänger-Themen 6
A Prüfen ob Datei existiert Java Basics - Anfänger-Themen 9
G Verfügbare Clients prüfen ohne ping Java Basics - Anfänger-Themen 12
P JSP Werte übergeben und prüfen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben