Java Language Comparer les tableaux pour l'égalité


Exemple

Types Array héritent leurs equals() (et hashCode() ) implémentations de java.lang.Object , donc equals() à equals() ne retourne vrai lorsque l'on compare contre exactement le même objet tableau. Pour comparer les tableaux en fonction de leurs valeurs, utilisez java.util.Arrays.equals , qui est surchargé pour tous les types de tableau.

int[] a = new int[]{1, 2, 3};
int[] b = new int[]{1, 2, 3};
System.out.println(a.equals(b)); //prints "false" because a and b refer to different objects
System.out.println(Arrays.equals(a, b)); //prints "true" because the elements of a and b have the same values

Lorsque le type d'élément est un type de référence, Arrays.equals() appelle equals() sur les éléments du tableau pour déterminer l'égalité. En particulier, si le type d'élément est lui-même un type de tableau, la comparaison d'identité sera utilisée. Pour comparer les tableaux multidimensionnels pour l’égalité, utilisez Arrays.deepEquals() comme ci-dessous:

int a[] = { 1, 2, 3 };
int b[] = { 1, 2, 3 };

Object[] aObject = { a }; // aObject contains one element
Object[] bObject = { b }; // bObject contains one element

System.out.println(Arrays.equals(aObject, bObject)); // false
System.out.println(Arrays.deepEquals(aObject, bObject));// true

Étant donné que les ensembles et les cartes utilisent equals() et hashCode() , les tableaux ne sont généralement pas utiles en tant qu'éléments de définition ou clés de carte. Soit les envelopper dans une classe d'assistance qui implémente equals() et hashCode() en fonction des éléments du tableau, soit les convertir en instances List et stocker les listes.