Ein HashSet speichert nur Werte, wenn die equals -Methode angibt, dass sie identisch sind. Das ist was ich dachte.HashSet enthält doppelte Einträge
Aber jetzt füge ich Elemente zu einem HashSet hinzu, wo die equals Methode true zurückgibt und die Größe des Sets immer noch wächst ?? Entschuldigung ich bin verwirrt. Einige Hinweise, bei denen ich falsch liege, wären nett.
Element t1 = new Element(false, false, false, false);
Element t2 = new Element(true, true, true, true);
Element t3 = new Element(false, false, false, false);
if (t1.equals(t3))
System.out.println("they're equal");
Set<Element> set = new HashSet<>();
set.add(t1);
set.add(t2);
set.add(t3);
System.out.println("set size: " + set.size());
so in diesem Beispiel meine Konsole ausgegeben:
sie gleich
Set Größe sind: 3
Das für mich keinen Sinn macht .. shouldn die Größe sein 2?
hatte ein wenig Tippfehler. anstelle von t2.equals (t3) habe ich t1.equals (t3) überprüft und es heißt, dass t1 und t3 sind gleich nach ihrer equals-Methode – tObi
lesen Sie meine Antwort, müssen Sie auch 'hashCode' Methode überschreiben. –
[Duplizieren] (http://stackoverflow.com/questions/2961350/java-hashset-is-allowing-dupes-problem-with-comparable) – OldCurmudgeon