Comparer deux tableaux en Java

En Java, on peut comparer deux tableau en comparant chaque élément du tableau. La classe Arrays de Java fournit des méthodes qui peuvent être utiles pour faire la comparaison du deux tableau en Java.

On va apprendre comment comparer deux tableau en Java en utilisant la méthode Arrays.equals() et Arrays.deepEquals()avec des exemples.

Deux tableaux sont égaux s'il ont:

  • Le même type.
  • Le même nombre d'éléments.
  • Chaque pair d'éléments des deux tableaux sont égaux.
  • L'ordre des éléments doit être le même.

La méthode Arrays.equals() 

La classe Java Arrays fournit la méthode equals() pour comparer deux tableaux. Son principe est de comparer les éléments des deux tableaux en faisant le parcours.

public static boolean equals(int[] a1, int[] a2)

La méthode equals renvoie true si les éléments du tableaux sont égaux sinon false.

Exemple:

import java.util.Arrays; 

public class equals
{
public static void main (String[] args)
{
// tableaux à comparer
int[] array1 = new int[] {1, 2, 3, 4, 5};
int[] array2 = new int[] {1, 2, 3, 4, 5};
int[] array3 = new int[] {1, 2, 2, 4, 5};

//comparer les tableaux array1 et array2 avec la méthode equals
if (Arrays.equals(array1, array2))
System.out.println("Les tableaux sont égaux");
else
System.out.println("Les tableaux ne sont pas égaux.");

// comparer array1 avec array3
if (Arrays.equals(array1, array3))
System.out.println("Les tableaux sont égaux");
else
System.out.println("Les tableaux ne sont pas égaux.");
}
}
Exécution:

Les tableaux sont égaux
Les tableaux ne sont pas égaux.

La méthode Arrays.equals() compare les éléments des deux tableaux.

Remarque: si les deux tableaux sont contenus dans des objets différents mais ont les mêmes valeurs, dans ce cas il ne sont pas égaux comme le montre l'exemple ci-dessous.

public class comparaisonTableaux2
{
public static void main (String[] args)
{
// tableaux à comparer
String[] array1 = new String[] {"a", "b", "c", "d"};
String[] array2 = new String[] {"a", "b", "c", "d"};
Object[] arrayObj1 = {array1};
Object[] arrayObj2 = {array2};

// comparer arrayObj1 et arrayObj2
if (Arrays.equals(arrayObj1, arrayObj2))
System.out.println("Les tableaux sont égaux");
else
System.out.println("Les tableaux ne sont pas égaux.");
}
}

Exécution:

Arrays are not equal.

On voit que Arrays.equals() ne peut pas effectuer une comparaison plus profonde et pour résoudre ça il faut utiliser la méthode deepEquals().

La méthode Arrays.deepEquals()

La classe Arrays fournit une autre méthode plus efficace pour comparer de façon plus profonde le contenu des tableaux comme son nom indique.

public static boolean deepEquals(Object[] t1, Object[] t2) 

La méthode deepEquals analyse les deux tableaux t1 et t2 et les compare. après l'analyse profonde, elle renvoie ture si les deux sont égaux sinon false.

Deux tableaux t1 et t2 de type Object sont égaux s'ils ont au moins une des propriétés suivantes:

  • t1 = t2
  • equals(t2) retourne true.
  • Si t1 et t2 ont le même type référence objet, la méthode deepEquals(t1,t2) renvoie true.
  • Si t1 et t2 ont le même type primitive, la méthode equals(t1,t2) renvoie true.

Exemple:

public class comparaisonTableaux3
{
public static void main (String[] args)
{
// tableaux à comparer
String[] array1 = new String[] {"java", "php", "javascript", "c++"};
String[] array2 = new String[] {"java", "php", "javascript", "c++"};
Object[] t1 = {array1};
Object[] t2 = {array2};

// comparer arrayObj1 et arrayObj2
if (Arrays.deepEquals(t1, t2))
System.out.println("Les tableaux sont égaux");
else
System.out.println("Les tableaux ne sont pas égaux.");
}
}

Exécution:

Les tableaux sont égaux

Références:

Javadoc - Class DeepEquals

Java.util.Arrays.equals(Object[], Object[]) Method