C'est curieux. Un collègue m'a interrogé sur l'implémentation de myArray.hashCode() en Java. Je pensais le savoir, mais j'ai fait quelques tests. Regardez le code ci-dessous. La chose étrange que j'ai remarquée est que lorsque j'ai écrit le premier sys out, les résultats étaient différents. Notez que c'est presque comme s'il rapportait une adresse mémoire et que la modification de la classe déplaçait l'adresse ou quelque chose comme ça. J'ai juste pensé à partager cette information.
int[] foo = new int[100000];
java.util.Random rand = new java.util.Random();
for(int a = 0; a < foo.length; a++) foo[a] = rand.nextInt();
int[] bar = new int[100000];
int[] baz = new int[100000];
int[] bax = new int[100000];
for(int a = 0; a < foo.length; a++) bar[a] = baz[a] = bax[a] = foo[a];
System.out.println(foo.hashCode() + " ----- " + bar.hashCode() + " ----- " + baz.hashCode() + " ----- " + bax.hashCode());
// returns 4097744 ----- 328041 ----- 2083945 ----- 2438296
// Consistently unless you modify the class. Very weird
// Before adding the comments below it returned this:
// 4177328 ----- 4097744 ----- 328041 ----- 2083945
System.out.println("Equal ?? " +
(java.util.Arrays.equals(foo, bar) && java.util.Arrays.equals(bar, baz) &&
java.util.Arrays.equals(baz, bax) && java.util.Arrays.equals(foo, bax)));