Datentypen HashSet contains()

DasBrot

Mitglied
Hallo,

folgender Code:
Java:
public class MyElement {
	private String name;
	public MyElement(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public boolean equals(Object o) {
		System.out.println(name+" compared to "+((MyElement)o).getName());
		return name.equals(((MyElement)o).getName());
	}
}

public class test {
	public static void main(String[] args) {
		Collection<MyElement> collection1 = new ArrayList<MyElement>();
		Collection<MyElement> collection2 = new HashSet<MyElement>();
		MyElement e1 = new MyElement("e1");
		MyElement e2 = new MyElement("e2");
		MyElement e3 = new MyElement("e3");

		System.out.println("Adding 3 Elements");
		collection1.add(e1);
		collection1.add(e2);
		collection1.add(e3);

		collection2.add(e1);
		collection2.add(e2);
		collection2.add(e3);
		
		MyElement test = new MyElement("e2");
		System.out.println("Checking contains():");
		if (collection1.contains(test)) {
			System.out.println("Collection1 contains e2");
		} else {
			System.out.println("Collection1 doesn't contain e2");
		}

		boolean containselement = true;
		if (collection2.contains(test)) {
			System.out.println("Collection2 contains e2");
		} else {
			System.out.println("Collection2 doesn't contain e2");
			containselement = false;
		}
		if (containselement) {
			return;
		}
		System.out.println("Checking again manually:");
		for(MyElement e:collection2) {
			if (e.equals(test)) {
				System.out.println("But Collection2 does contain e2!");
				return;
			}
		}
	}
}

erzeugt mir diese Ausgabe:

Code:
Adding 3 Elements
Checking contains():
e2 compared to e1
e2 compared to e2
Collection1 contains e2
Collection2 doesn't contain e2
Checking again manually:
e2 compared to e2
But Collection2 does contain e2!

Aber wenn contains(o) definiert ist als (o==null ? e==null : o.equals(e)), wieso ruft das HashSet dann nicht mal die equals-Methode auf (o ist ja nicht null)?

Danke!

DasBrot
 

Der Müde Joe

Top Contributor
Naja.
HashSet basiert auf hashCode(). Wenn der hash passt, passts.

Wenn man equals überschreibt, sollte (muss) man auch hashCode überschreiben. Gewisse Dinge in Java basieren darauf. zb HashMap, HasSet, Hashtable...

Überschreib mal hashCode() ;-)
 

DasBrot

Mitglied
Ah gut stimmt, schönen Dank!

Das Brot

edit: Man muss aber anmerken, dass es trotzdem inkonsequent ist, das nicht in der Doku zu erwähnen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J HashSet Methode contains liefert false (hash Methode überschrieben) Java Basics - Anfänger-Themen 3
M HashSet.contains() Java Basics - Anfänger-Themen 2
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
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
J HashSet contain Methode funktioniert nicht wie gewollt Java Basics - Anfänger-Themen 7
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
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
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
A Checkstyle - File contains tab characters Java Basics - Anfänger-Themen 2
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
R contains ist case-intrensive Java Basics - Anfänger-Themen 7
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
B String: Groß- und Kleinschreibung ignorieren bei Contains? Java Basics - Anfänger-Themen 2
L String überprüfen mit .equals .contains oder .matches? Java Basics - Anfänger-Themen 1
G String nach Contains/Regex Java Basics - Anfänger-Themen 2
J Datentypen Anwendung von String contains Java Basics - Anfänger-Themen 4
gamebreiti Verständnisfrage zu contains() Java Basics - Anfänger-Themen 10
I set contains false Java Basics - Anfänger-Themen 11
S Unterschiede zwischen equals und contains Java Basics - Anfänger-Themen 2
S Polygon contains - Erläuterung Java Basics - Anfänger-Themen 3
S Methode contains beim String Java Basics - Anfänger-Themen 2
A contains bzw. indexOf liefert keine Treffer? Java Basics - Anfänger-Themen 3
L String.contains() - substring erstellen Java Basics - Anfänger-Themen 3
D Problem mit string.equals bzw string.contains Java Basics - Anfänger-Themen 4
K Methoden contains()-Methode für Punkt in Polygon Java Basics - Anfänger-Themen 5
G NetBeans Contains files with errors Java Basics - Anfänger-Themen 14
D String contains CharSequence? Java Basics - Anfänger-Themen 3
S Hexstring contains & split Java Basics - Anfänger-Themen 2
R Collections Probleme mit contains()-Methode [LinkedList] Java Basics - Anfänger-Themen 5
Z Fehler bei .contains auf Double Liste Java Basics - Anfänger-Themen 4
C Datentypen Probleme mit Vector.contains() Java Basics - Anfänger-Themen 10
R Datentypen Problem mit Contains bei String[] Java Basics - Anfänger-Themen 4
T Polygon.contains Fehler Java Basics - Anfänger-Themen 2
Rene_Meinhardt Polygon.Contains() funktioniert nicht richtig? Java Basics - Anfänger-Themen 3
A ArrayList<T>: Problem mit contains() bei parametrisiertem T Java Basics - Anfänger-Themen 6
H contains (für LIST) funktioniert nicht - ich weiß nicht warum? Java Basics - Anfänger-Themen 7
B String contains.("") Java Basics - Anfänger-Themen 3
K ArrayList contains()-Methode Java Basics - Anfänger-Themen 10
G Erzeugung eines Dreiecks und die contains Methode Java Basics - Anfänger-Themen 2
R Vector mit contains abfragen Java Basics - Anfänger-Themen 32
H Strings suchen mit der Hilfe von "contains" Java Basics - Anfänger-Themen 6
D ArrayList contains mit Wildcard Java Basics - Anfänger-Themen 3
K public boolean contains (Object obj) > true or false Java Basics - Anfänger-Themen 16
M Fehlermeldung (The method contains(String) is. Java Basics - Anfänger-Themen 3
lin Kommandozeile bzw. if(cl.contains("xy")) { //do } Java Basics - Anfänger-Themen 7
S wie wende ich "contains(CharSequence s)" auf mein Java Basics - Anfänger-Themen 3
G contains - Punkt in Kreis enthalten? Java Basics - Anfänger-Themen 6
D contains bei JTextArea anstatt bei JTextField Java Basics - Anfänger-Themen 8
S Text eines JTextField mit contains überprüfen Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben