Currently I drilled into the JSE source code for fun. From some tutorials I found a principle
two equals objects (i.e. as to object a and b a.equals(b) returns true) must have the same hashcode, on the other hand, two objects with the same hashcode are not necessarily equals
equals => same hashcode
two objects with the same hashcode are not necessarily equals
That's a simple matter of counting. A hash code is an integer so has 32 bits. Take now a
Long for example. Since it is 64 bits long, there are much more values than 232. Hence there must be a lot of values having the same hash code.