This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
In a nutshell, hashing is a very quick mechanism to distribute objects. It is important because when you have many object that needs to be added, removed, searched, in a collection -- hashing gives a way of doing it without constantly comparing it with other objects in the collection.
The purpose of the hashcode is to find a location -- a bucket to place object. Objects that are in different buckets, are by definition, different objects. However, objects that are in the same bucket, doesn't mean they are equal. These must be further checked with the equals() method.