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