How does a HashMap work?