HashSet contain Methode funktioniert nicht wie gewollt

Hi,
ich will ein Programm schreiben, in dem ich ein Objekt O in einem Hashset (HashSet set = new Hashset();) speicher und ein identisches Objekt O1 erstelle. Ich speichere das Objekt O im Hashset: set.add(O);
Mithilfe von set.contains(Object O1) gucke ich ob das identische Objekt schon exestiert.
Die equals und Hashcode Methode habe ich schon als Objektmethoden von O hinzugefügt. Die beiden Objekte (welche identisch sind) zeigen auch jetzt den gleichen Hashcode an.
Nur leider zeigt die contains Methode noch immer false an! Was mache ich falsch?
 
Zuletzt bearbeitet:
Ok dachte es liegt vielleicht an einem falschen Gedankengang.

Hier der Code
Java:
import java.util.HashSet;
public class Testerklasse{
	private String t;
	private String a;
	private int j;
	
	// Konstruktor
	Testerklasse(String t, String a,int j){
		this.t = t;
		this.a = a;
		this.j = j;
	}
	
	//get Methoden
	public String getT(){
	return this.t;	
	}
	public String getA()){
	return this.a;	
	}
	public int getJ(){
	return this.j;	
	}
	
	//überschriebene equals Methode
	public boolean equals(Testerklasse ebook){
		if(this.t == ebook.getT() && this.a == ebook.getA() && this.j == ebook.getJ())
			return true;
		return false;
	}
	
	//überschriebene hashCode() Methode
	public int hashCode(){
		return (int) (Math.pow(this.getT().hashCode()*31, 3) + Math.pow(this.a.hashCode()*31,2) + Math.pow(this.j *31,1)) ; 
	}
	
	public static void main(String[]args){
		HashSet set = new HashSet();
		Testerklasse eb = new Testerklasse("Test","Tester",123);
		set.add(eb);
		Testerklasse eb1 = new Testerklasse("Test","Tester",123);
		System.out.println(eb1.hashCode());
		System.out.println(eb.hashCode());
		System.out.println(set.contains(eb1));
	
	}
	

	
}
 
Jap das stimmt aufjedenfall!! Leider hilft das nicht bei der Problemlösung. Bekomme noch immer false, obwohl die Objekte identisch sind... Ich probiere mal noch ein bisschen rum!
Muss ich vielleicht die Methode contains auch angleichen? Eigentlich sollte es aber auch ohne gehen!
 
Zuletzt bearbeitet:

knilch

Bekanntes Mitglied
Hi,
Da ein Vergleich von Objekten gemacht wrid, muss die equals Methode von Testerklasse auch noch implementiert werden.
in etwa so:
Java:
    @Override
    public boolean equals(Object obj) {
        Testerklasse c = (Testerklasse)obj;
        if(c == null)
            return false;   
        if(!a.equals(c.getA()))
            return false;
        if(!t.equals(c.getT()))
            return false;
        if(j != c.getJ())
            return false;
        return true;
    }
 
Zuletzt bearbeitet:

knilch

Bekanntes Mitglied
Also brauche ich 2 überschriebene equals Methoden einmal mit Object als Objekt und einmal mit Testerklasse als Objekt?
Die equals Methode von dir wird nicht für Vergleiche von Instanzen angezogen. Du musst zwingend die equals Methode von Object überschreiben. Sonst wird der Vergleich von Instanzen immer false geben.
Java:
  @Override
public boolean equals(Object obj) {
...
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
volcanos HashSet und Iterator -> Falsche Sortierreihenfolge ? Java Basics - Anfänger-Themen 18
D Erste Schritte Code verstehen - HashSet Java Basics - Anfänger-Themen 8
J Hashset Java Basics - Anfänger-Themen 13
J HashSet Methode contains liefert false (hash Methode überschrieben) Java Basics - Anfänger-Themen 3
W Element aus HashSet in String umformen Java Basics - Anfänger-Themen 7
T HashSet in List-Object Java Basics - Anfänger-Themen 5
C Auf einzelne Werte aus HashSet zugreifen Java Basics - Anfänger-Themen 10
J Klassen HashSet, TreeSet: unregelmäßige Zahlenreihen beim Befüllen Java Basics - Anfänger-Themen 7
T Methoden HashSet Objekt mit Zufallszahlen befüllen Java Basics - Anfänger-Themen 3
J Verstehe meine HashSet Ausgabe nicht Java Basics - Anfänger-Themen 5
W Verknüpfung von Räumen mit Hashset Java Basics - Anfänger-Themen 10
M Collections HashSet verständnisproblem Java Basics - Anfänger-Themen 9
R Hashset.add(Array) liefert immer true? Java Basics - Anfänger-Themen 23
Mrtwomoon Collections Hashset elemente ohne Eckigeklammer ausgeben Java Basics - Anfänger-Themen 9
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
A Elemente in HashSet enthalten oder nicht Java Basics - Anfänger-Themen 6
A HashSet (oder besser geignetes) Java Basics - Anfänger-Themen 14
T Hashset - Allgemeine Fragen Java Basics - Anfänger-Themen 19
J So ähnlich wie HashSet Java Basics - Anfänger-Themen 2
D HashSet vs Liste Java Basics - Anfänger-Themen 5
T HashSet Java Basics - Anfänger-Themen 3
F suche Elemente in HashSet Java Basics - Anfänger-Themen 5
E Collections HashSet - Ausgabe sortiert? Java Basics - Anfänger-Themen 3
J HashSet Fehlerhaft Java Basics - Anfänger-Themen 10
J HashSet Implementierung Java Basics - Anfänger-Themen 16
D Problem mit HashSet Java Basics - Anfänger-Themen 12
darekkay Datentypen HashSet bzw. LinkedList mit Werten initialisieren Java Basics - Anfänger-Themen 3
B Hashset iterieren problem Java Basics - Anfänger-Themen 3
C HashSet Problem Java Basics - Anfänger-Themen 3
DasBrot Datentypen HashSet contains() Java Basics - Anfänger-Themen 3
F HashSet u. LinkedHashSet Zugriff auf Werte? Java Basics - Anfänger-Themen 2
F HashSet und LinkedHashSet Instanzierung warum so? Java Basics - Anfänger-Themen 7
M HashSet.contains() Java Basics - Anfänger-Themen 2
N Map<String, HashSet<String>> Umwandeln in Map<String, ArrayList<String>> Java Basics - Anfänger-Themen 14
neurox Limit bei HashSet? Java Basics - Anfänger-Themen 2
Povlsen84 HashSet mit eigenen Datentypen Java Basics - Anfänger-Themen 6
G HashSet vs. TreeSet Java Basics - Anfänger-Themen 3
G hashset überschreibt werte bei add Java Basics - Anfänger-Themen 1
G Wie mach ich ein HashSet für eigene Objecte? Java Basics - Anfänger-Themen 9
M HashSet Initialisierungsgröße? Java Basics - Anfänger-Themen 5
F doppelte Elemente in HashSet Java Basics - Anfänger-Themen 5
G Probleme mit HashSet Java Basics - Anfänger-Themen 5
S HashSet in HashMap, Zugriff Java Basics - Anfänger-Themen 3
G Zahlen aus HashSet in ein int Array übergeben Java Basics - Anfänger-Themen 15
G Hashset verknüpfen mit BufferedReader Java Basics - Anfänger-Themen 18
L Was ist ein HashSet? Java Basics - Anfänger-Themen 33
G HashSet Java Basics - Anfänger-Themen 21
P HashSet und Referenzen Java Basics - Anfänger-Themen 9
B Warum hat HashSet kein get(Object o) ? Java Basics - Anfänger-Themen 8
H umwandeln zu Hashset ?! Java Basics - Anfänger-Themen 7
E Contain-funktion überlisten Java Basics - Anfänger-Themen 4
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
S Selection does not contain a main type! Java Basics - Anfänger-Themen 5
S Selection does not contain a main type Java Basics - Anfänger-Themen 12
I Erste Schritte Eclipse - Does not contain a main type Java Basics - Anfänger-Themen 8
T selection method does not contain a main type Java Basics - Anfänger-Themen 7
K Erste Schritte selection does not contain a main type Java Basics - Anfänger-Themen 3
B Editor does not contain a main type Java Basics - Anfänger-Themen 3
V Eclipse "Selection does not contain a main type" Java Basics - Anfänger-Themen 13
B Selection does not contain a main type Java Basics - Anfänger-Themen 2
C Editor does not contain a main type Java Basics - Anfänger-Themen 7
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben