Java objects
are expected
to obey a
number of
invariants
related to
equality.
One of these
invariants
is that
equal
objects must
have equal
hashcodes.
In other
words, if
a.equals(b)
== true then
a.hashCode()
==
b.hashCode().
Failure
to uphold
this
invariant is
likely to
cause
trouble if
objects of
this class
are stored
in a
collection.
If the
objects of
the class in
question are
used as a
key in a
Hashtable or
if they are
inserted
into a Map
or Set, it
is critical
that equal
objects have
equal
hashcodes.