In item 9 of his book "Effective Java" Joshua Bloch states that failure to override hashCode in a class that overrides equals will prevent that class from working correctly when it is used in hash-based collections like HashMap, HashSet and Hashtable.
He also indicates that when you fail to override hashCode you are breaking the following Object contract: equal objects must have equal hash codes. A consequence of this the inability of Map<K,V>.get(Object key) to work properly because, under certain conditions, the get method will not check for object equality for objects that have different hashCodes.
For a thorough treatment I highly recommend reading Item 9 "Always override hashCode when you override equals" of
Effective Java.