Apart from the fact that `HashSet`

does not allow duplicate values, what is the difference between `HashMap`

and `Hashset`

?

I mean implementation wise? It"s a little bit vague because both use *hash tables* to store values.

They are entirely different constructs. A `HashMap`

is an implementation of `Map`

. A Map maps keys to values. The key look up occurs using the hash.

On the other hand, a `HashSet`

is an implementation of `Set`

. A Set is designed to match the mathematical model of a set. A `HashSet`

does use a `HashMap`

to back its implementation, as you noted. However, it implements an entirely different interface.

When you are looking for what will be the best `Collection`

for your purposes, the Tutorial is a good starting place. If you truly want to know what's going on, there's a book for that, too.