BigDecimal in HashSet eingefügt, aber nicht in TreeSet

Status
Nicht offen für weitere Antworten.

André Uhres

Top Contributor
Wenn ich ein HashSet erzeuge und new BigDecimal("1.0") und new BigDecimal("1.00") einfüge, dann enthält der Set zwei Elemente.
Wenn ich das Gleiche jedoch mit einem TreeSet anstatt HashSet mache, dann enthält der Set nur ein Element.
Wie erklärt sich das unterschiedliche Verhalten?
 

kleiner_held

Top Contributor
HashSet nimmt nur die Kombination aus hashCode() und equals() um die Gleichheit zu ueberpruefen.

TreeSet nimmt die compareTo() methode des Comparable interfaces und wenn die ein 0 zurueckgibt, dann werden die objekte als gleich behandlet und im Set ersetzt.

Beim BigDecimal sind 2 BigDecimal's mit unterschiedlicher Skalierung nicht equal, aber ein compareTo gibt 0 zureuck. Steht glaub ich auch so in der JavaDoc, dass das eine (haessliche) Abweichung von der Konvention ist. Eigentlich fordert Comparable, dass compareTo() nur dann ein 0 zurueckgibt, wenn die Objekte auch equal sind.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Robertop BigDecimal ergänzt unnötige 0 am Ende Allgemeine Java-Themen 6
M Probleme mit BigDecimal Allgemeine Java-Themen 1
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
M float, double, BigDecimal Allgemeine Java-Themen 5
A Ungünstige BigDecimal-Klasse Allgemeine Java-Themen 44
ARadauer BigDecimal und Not a Number Allgemeine Java-Themen 4
R BigDecimal, Position des Kommas Allgemeine Java-Themen 2
J Umstellung von double auf BigDecimal Allgemeine Java-Themen 5
F BigDecimal devide Allgemeine Java-Themen 5
S wiedermal ein kleines Problem mit BigDecimal Allgemeine Java-Themen 5
B BigDecimal Schleifen Allgemeine Java-Themen 9
J BigInteger und BigDecimal im Eclipse-Debugger Allgemeine Java-Themen 3
hdi Probleme beim Rechnen mit BigDecimal Allgemeine Java-Themen 5
N BigDecimal falsch formatiert bei Locale.GERMANY Allgemeine Java-Themen 3
S String to BigDecimal Allgemeine Java-Themen 6
N BigDecimal.divide Problem Allgemeine Java-Themen 6
N setscale bigdecimal Allgemeine Java-Themen 3
M String to BigDecimal Allgemeine Java-Themen 7
N BigDecimal formatieren Allgemeine Java-Themen 2
G BigDecimal Rundet falsche Allgemeine Java-Themen 4
T bigdecimal.pow(0.5) Allgemeine Java-Themen 19
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3
B OOP HashSet sortiert ausgeben Allgemeine Java-Themen 11
J Suchen von einer Scannereingabe in einem HashSet Allgemeine Java-Themen 1
S Mehrdimensionales ArrayList ins HashSet Allgemeine Java-Themen 10
M HashSet<String> das selbe oder das gleiche? Allgemeine Java-Themen 4
M Vergleich von TreeSet<HashSet>^2 Allgemeine Java-Themen 8
J Element aus HashSet löschen Allgemeine Java-Themen 2
R HashSet mit eigenem Objekt als Key Allgemeine Java-Themen 10
G Hashset einen eintrag zufällig entfernen Allgemeine Java-Themen 4
M HashSet Problem mit Haus oder HAus Allgemeine Java-Themen 4
D objekte in hashset einsortieren Allgemeine Java-Themen 10
L Liste (SWT widget) mit HashSet synchronisieren Allgemeine Java-Themen 5
M java hashSet Allgemeine Java-Themen 15
E Statt HashSet die TreeSet verwenden Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben