Java.util.Arrays.deepEquals() en Java

Arrays.deepEquals() se utiliza para verificar si dos arrays de arrays unidimensionales o multidimensionales son iguales o no. Puede comparar dos arrays anidadas (es decir, una array multidimensional), independientemente de su dimensión.

  • Dos referencias de array se consideran profundamente iguales si ambas son nulas o si se refieren a arrays que contienen el mismo número de elementos y todos los pares de elementos correspondientes en las dos arrays son profundamente iguales.
  • Dos elementos posiblemente nulos e1 y e2 son profundamente iguales si se cumple alguna de las siguientes condiciones:
    • e1 y e2 son arrays de tipos de referencia de objetos, y Arrays.deepEquals(e1, e2) devolvería verdadero
    • e1 y e2 son arrays del mismo tipo primitivo, y la sobrecarga adecuada de Arrays.equals(e1, e2) devolvería verdadero.
    • e1 == e2
    • e1.equals(e2) devolvería verdadero.

    Tenga en cuenta que esta definición permite elementos nulos en cualquier profundidad.

  • Es un método de la clase Arrays.

Sintaxis:

public static boolean deepEquals(Object[] o1, Object[] o2)

o1 = First Array to test for Equality
o2 = Second Array to test for Equality

Returns true if two array are equal
// Java program to demonstrate working of deepEquals.
import java.util.Arrays;
public class GFG {
public static void main(String[] args)
    {
        int a1[][] = { { 10, 20 },
                       { 40, 50 },
                       { 60, 70 } };
  
        int a2[][] = { { 30, 20 },
                       { 10, 0 },
                       { 60, 80 } };
  
        int a3[][] = { { 10, 20 },
                       { 40, 50 },
                       { 60, 70 } };
        System.out.println("Check if a1 is equal to a2 : "
                           + Arrays.deepEquals(a1, a2));
  
        System.out.println("Check if a2 is equal to a3 : "
                           + Arrays.deepEquals(a2, a3));
  
        System.out.println("Check if a1 is equal to a3 : "
                           + Arrays.deepEquals(a1, a3));
    }
}

Producción:

Check if a1 is equal to a2 : false
Check if a2 is equal to a3 : false
Check if a1 is equal to a3 : true

Incluso podemos usar deepEquals() para probar la igualdad de la array de objetos de la clase definida por el usuario. Consulte el ejemplo a continuación
. Deberíamos anular el método equals para definir la igualdad de los diferentes parámetros en una clase definida por el usuario.

// Java program to demonstrate working of deepEquals
// for arrays of user defined obj.
import java.util.Arrays;
public class GFG {
public static class Employee {
  
        int Eid;
        String Ename;
  
    public Employee(int Eid, String Ename)
        {
            this.Eid = Eid;
            this.Ename = Ename;
        }
  
        // Overriding the equals()
    public boolean equals(Object obj)
        {
  
            // type casting obj to Employee
            Employee s = (Employee)obj;
            return (this.Eid == s.Eid && this.Ename.equals(s.Ename));
        }
    } public static void main(String args[])
    {
        // Creating an array of objects of user defined class.
        Employee e1[][] = { { new Employee(10, "Geek1"),
                              new Employee(11, "Geek2") },
                            { new Employee(12, "Geek3"),
                              new Employee(13, "Geek4") } };
  
        Employee e2[][] = { { new Employee(10, "Geek1"),
                              new Employee(11, "Geek2") },
                            { new Employee(12, "Geek3"),
                              new Employee(13, "Geek4") } };
  
        Employee e3[][] = { { new Employee(12, "Geek2"),
                              new Employee(25, "Geek4") },
                            { new Employee(15, "Geek3"),
                              new Employee(30, "Geek1") } };
  
        System.out.println("Check if e1 is equal to e2 : "
                           + Arrays.deepEquals(e1, e2));
  
        System.out.println("Check if e2 is equal to e3 : "
                           + Arrays.deepEquals(e2, e3));
  
        System.out.println("Check if a1 is equal to a3 : "
                           + Arrays.deepEquals(e1, e3));
    }
}

Producción:

Check if e1 is equal to e2 : true
Check if e2 is equal to e3 : false
Check if a1 is equal to a3 : false

Equals() vs deepEquals()

Aunque Arrays.equals() funciona correctamente en una array unidimensional, no puede verificar la igualdad de arrays multidimensionales.
Mientras que Arrays.deepEquals() funciona en todas las arrays, independientemente de la dimensión.

Referencia:
https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#deepEquals-java.lang.Object:A-java.lang.Object:A-

Este artículo es una contribución de Sumit Ghosh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *