2016-05-27 6 views
1
/** 
* Returns a hash code for this Rational object. That hash code is 
* derived from the hash codes for its two components. This design 
* decision ensures that two Rational objects that are equal will have 
* the same hash code. 
* @return An integer hash code for this object 
*/ 

public int hashCode() { 
    return new Integer(num).hashCode()^(37 * new Integer(den).hashCode()); 
} 

Antwort

1

Die Klasse Rational gehört nicht zum Standard-Java. Eine Google-Suche zeigt, dass es Teil einer externen Bibliothek sein könnte, aber Sie haben uns nicht gesagt, welches, wir können nicht wirklich etwas über sein Verhalten sagen.

Wenn Rational einen Konstruktor hat, die ein einzelnes int nimmt, würde ich erwarten, dass es einen Standard Nenner 1 bietet, so ist es durchaus sinnvoll, einen Hash-Code mit der Methode berechnen Sie zitiert.

Die Standard Integer#hashCode() Methode gibt einfach die ganze Zahl selbst als Hash-Code, so dass die zurückgegebene Wert 0x00000001 mit 0x00000025 EXOR'ed wäre, oder 0x00000024 (36 dezimal).