Keys of HashMap in Java
The tricky thing is how to decide the key for a hashmap. Especially when you intend to use self-defined objects as key.
If you want to make two different objects 'equal' to each other, you have to overwrite equals() and hashCode().
The simple rule is you have to overwrite hashcode() and equals() method.
Rule 1: x.equals(y) return true if x indeed is equal to y by your own logic;
Rule 2: if x.equals(y) then x.hashcode() == y.hashcode().
Ideally any two different objects have distinct hashcodes. But that't not possible since hashcode is used to generate real array index. Unfortunately, collisison will happen. Thus in practice it's possible for two different objects to have same hashcode. Then equals() is used to tell one from the other.
Example:How to overwrite hashCode() and equals()