Hashing is an algorithm to map a large and variable set of values (could be non-integers) to a smaller fixed size.
Simplest example to Phone Numbers. How to search effectively the information related to the number? Create a Hash Function that will generate an integer from a phone number, you would get the integer which can be used as index in an array.
Collision Resolution
In Java the collision resolution is done using equals method.