Long time since memory lane jogged on why we override the .Equals method and the importance of HashCode. Here is a question that was in Stackoverflow today.,
why default native implementation of hashcode in java returns different integer for same object? - Stack Overflow: "http://stackoverflow.com/a/17159908/1207867"
and of course it is always a good to read rom Bruce Exckel's Thinking in Java for the perfect reason.