This week's book giveaway is in the OCMJEA forum. We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line! See this thread for details.
To understand hash tables you must understand the purpose and nature of hash functions. It's all about reducing a string to a single numeric value. If you then use that value to identify a storage location, you can lookup an element without a search: compute the hash value, that's your location.
It's slightly more complicated than that. Duplicate values are frequently generated and hash functions are not limited to strings by any means. But, generally speaking that's all you need to know.
Imagine a library with numerous rows of bookshelves. If you're looking for a particular book, it would be a lot faster if you knew what particular row of shelves to look in, rather than searching through the entire library. Of course, when you've found the correct shelves (indicated by hashCode), there might be other books on those shelves (because different objects might return the same hashCode), but you've narrowed your search to a much smaller region.