# HashCode-Generierung



## Guybrush Threepwood (26. Jun 2009)

Hi,
ich möchte von einem Object, das fast ausschließlich aus String-Objecten besteht einen HashCode berechnen. Ich dachte mir, da die String-Klasse bereits eine HashCode-Methode implementiert, könnte ich ja einfach alle Strings konkatenieren und dann den HashCode des Strings zurückgeben, oder? Ist das schlau oder sollte man das besser anders machen?
Außerdem: Kann dabei eine Exception auftreten, z. B. weil der hashcode nicht in einen int passt?

Vielen Dank und viele Grüße,
 Guybrush


----------



## maki (26. Jun 2009)

Nutzt du Eclipse?
Dann kannst du dir sowohl hascode als auch equals erstellen lassen:

Rechtsklick in Datei -> Source -> generate hascode() and equals()...


----------



## Guybrush Threepwood (26. Jun 2009)

Hey danke! Hatte ich bisher übersehen!


----------



## The_S (26. Jun 2009)

Guybrush Threepwood hat gesagt.:


> Außerdem: Kann dabei eine Exception auftreten, z. B. weil der hashcode nicht in einen int passt?



Nein.


```
int i = Integer.MAX_VALUE + 1; // Integer.MIN_VALUE
```


----------



## byte (26. Jun 2009)

Ich bevorzuge HashCodeBuilder und EqualsBuilder aus den Apache Commons.

Die durch Eclipse generierten Methoden sind (je nach Anzahl Member) elendig lang (zumindest die equals). Fügt man einen neuen Member hinzu, muss man die Methoden wegschmeissen und neu generieren lassen.

Bei den Buildern aus den Apache Commons fügt man einfach ne Zeile Code hinzu, wenn ein Member hinzukommt. Ausserdem sieht man auf einen Blick, auf welche Member die jeweiligen Methoden gehen.


----------

