equals()
you should also
override hashCode()
.
The hashCode()
method should ideally return
the same int
for any two objects that compace equal
and a different int for any two objects that
don't compare equal, where equality is defined by
the equals()
method. This is used as
an index by the java.util.Hashtable
class.
In the Car
example equality is determined exclusively
by comparing license plates; therefore
only the licesePlate
field is used to determine the hash code.
Since licensePlate
is a String
, and since the String
class has its own hashCode()
method,
we can sponge off of that.
public int hashCode() {
return this.licensePlate.hashCode();
}
Other times you may need to use the bitwise operators
to merge hash codes for multiple fields.
There are also a variety of useful methods in the
type wrapper classes (java.lang.Double
, java.lang.Float
, etc.)
that convert primitive data types to integers that
share the same bit string.
These can be used to hash primitive data types.