📜  Java中比较两个数组的equals()和deepEquals()方法

📅  最后修改于: 2022-05-13 01:55:19.123000             🧑  作者: Mango

Java中比较两个数组的equals()和deepEquals()方法

数组。如果一个数组包含另一个数组,则equals()方法不会递归比较数组。 deepEquals()方法递归地比较一个数组是否包含另一个数组。

Arrays.equals(Object[], Object[])

句法 :

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

参数 :

  • a – 一个要测试相等性的数组
  • a2 – 要测试相等性的另一个数组

返回:如果两个数组相等则为真

  • 如果数组彼此相等,则返回 True。
  • 如果两个数组包含相同数量的元素并且每个索引中的元素相同。
  • 此外,如果两个数组都为空,则它们被认为是相等的。
  • 如果一个数组包含另一个数组,则Arrays.equals()方法不会递归比较。
  • 在所有其他情况下,它返回 False。

Array.deepEquals(Object[], Object[])

句法:

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

o1 = First Array to test for Equality
o2 = Second Array to test for Equality
  • 如果两个数组彼此相等,则返回 True。
  • 如果两个数组在每个索引中包含相同数量的元素和相同的元素。
  • 此外,两个数组都为空,则它们被视为相等。
  • 此外,如果嵌套元素再次是数组,则嵌套数组的元素也以迭代方式进行比较。
  • Arrays.deepEquals()方法递归比较一个数组是否包含另一个数组。

主要区别:

如果在任何 Array 中,一个项目是另一个 Array 本身,则对equals()的调用转到默认的Java.lang.Object equals(),它比较两个 Object 的引用并且不执行深度比较并且在嵌套 Array 的情况下逻辑比较失败.

另一方面Arrays.deepEquals() 方法执行大量检查并调用Arrays.equals()进行非数组比较,并递归调用Arrays.deepEquals()进行数组类型比较,这允许它在Java中逻辑地比较嵌套数组。

注意:总是建议使用Arrays.equals()来比较非嵌套的 Array 和Arrays.deepEquals()来比较嵌套的 Array,因为Array.equals( ) 在非嵌套的情况下比Arrays.deepEquals()快大批。

Java中equals()的说明:

Java
// Java program to compare two arrays
// using .equals() method
  
import java.io.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        int[] A = { 1, 2, 3, 4, 5 };
        int[] B = { 1, 2, 3, 4, 5 };
        int[] C = { 2, 1, 4, 3, 5 };
        
        // Comparing two arrays A and B using .equals()
        if (Arrays.equals(A,B))
            System.out.println(
                "Array A and Array B is equal");
        else
            System.out.println(
                "Array A and Array B is not equal");
  
        if (Arrays.equals(A, C))
            System.out.println(
                "Array A and Array C is equal");
        else
            System.out.println(
                "Array A and Array C is not equal");
    }
}


Java
// Java program to compare two arrays
// using .deepEquals() method
  
import java.io.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        int[][] A
            = { { 1, 2, 3 }, { 3, 4, 5 }, { 6, 7, 8 } };
        int[][] B
            = { { 1, 2, 3 }, { 3, 4, 5 }, { 6, 7, 8 } };
        int[][] C
            = { { 3, 4, 5 }, { 4, 5, 6 }, { 7, 2, 4 } };
  
        // Comparing A and B arrays using .deepEquals() method
        if (Arrays.deepEquals(A, B))
            System.out.println(
                "Array A and Array B is equal");
        else
            System.out.println(
                "Array A and Array B is not equal");
  
        if (Arrays.deepEquals(A, C))
            System.out.println(
                "Array A and Array C is equal");
        else
            System.out.println(
                "Array A and Array C is not equal");
    }
}


输出
Array A and Array B is equal
Array A and Array C is not equal

下面是Java中 deepEquals() 的图示:-

Java

// Java program to compare two arrays
// using .deepEquals() method
  
import java.io.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        int[][] A
            = { { 1, 2, 3 }, { 3, 4, 5 }, { 6, 7, 8 } };
        int[][] B
            = { { 1, 2, 3 }, { 3, 4, 5 }, { 6, 7, 8 } };
        int[][] C
            = { { 3, 4, 5 }, { 4, 5, 6 }, { 7, 2, 4 } };
  
        // Comparing A and B arrays using .deepEquals() method
        if (Arrays.deepEquals(A, B))
            System.out.println(
                "Array A and Array B is equal");
        else
            System.out.println(
                "Array A and Array B is not equal");
  
        if (Arrays.deepEquals(A, C))
            System.out.println(
                "Array A and Array C is equal");
        else
            System.out.println(
                "Array A and Array C is not equal");
    }
}
输出
Array A and Array B is equal
Array A and Array C is not equal