Consider the following code snippet :
public class MainClass {
public static void main(String[] arg) {
Map<String, Object> map = new HashMap<>();
map.put("ONE", new BigInteger("1"));
map.put("TWO", new BigInteger("2"));
map.put("THREE", new BigInteger("3"));
map.put("FOUR", new BigInteger("4"));
map.put("FIVE", new BigInteger("5"));
map.put("SIX", new BigInteger("6"));
System.out.println("Hello !");
}
The result is:
- Map's
sizeis 6. Map's
tablecontains the following content:[FIVE=5, SIX=6, ONE=1, TWO=2, THREE=3]
FOUR disappeared. As a comment stated before, it would be wise to calculate the hashCode of my entries, modulo the size of the map. It gives the following result:
ONE : 0
TWO : 0
THREE : 1
FOUR : 2
FIVE : 3
SIX : 4
As we can see, the hashCode does not indicate anything considering the collision of FOUR with any value. This also works with ConcurrentHashMap and LinkedHashMap, so I guess it is a HashMap problem.
Can someone explain to me what is actually going on ? I'm quite lost on this one.
I'm working with:
- Eclipse Neon
- JDK 8
