Java Arrays.equals()方法

原文:https://www.studytonight.com/java-util/java-arrays-equals-method

在本教程中,我们将学习 JavaArrays类的equals()方法。此方法用于检查给定的两个数组是否相等。如果两个数组都是null 或者两个数组具有相同的长度并且每个对应的元素都相同,则两个数组相等。该方法将接受两个数组,并且在比较这两个数组之后,它将基于等式返回布尔值truefalse

语法:

public static boolean equals(Object[] array1,Object[] aarray2)

equals()方法重载方法列表

此表包含equals()方法的所有重载变体。

方法 描述
静态布尔等于(布尔[] a,布尔[] a2) 如果两个指定的布尔值数组相等,则此方法返回 true。
静态布尔等于(布尔[] a,int aFromIndex,int aToIndex,布尔[] b,int bFromIndex,int bToIndex) 如果指定范围内的两个指定布尔值数组彼此相等,则此方法返回 true。
静态布尔等于(字节[] a,字节[] a2) 如果两个指定的字节数组彼此相等,则此方法返回 true。
静态布尔等于(字节[] a,int aFromIndex,int aToIndex,字节[] b,int bFromIndex,int bToIndex) 如果指定范围内的两个指定字节数组彼此相等,则此方法返回 true。
静态布尔等于(char[] a,char[] a2) 如果两个指定的字符数组相等,则此方法返回 true。
静态布尔等式(char[] a、int afromindex、int aToIndex、char[] b、int bfromindex、int bToIndex) 如果指定范围内的两个指定字符数组彼此相等,则此方法返回 true。
静态布尔等于(double[] a,double[] a2) 如果两个指定的双精度数组彼此相等,则此方法返回 true。
静态布尔等于(double[] a,int aFromIndex,int aToIndex,double[] b,int bFromIndex,int bToIndex) 如果指定范围内的两个指定的双精度数组彼此相等,则此方法返回 true。
静态布尔等于(float[] a,float[] a2) 如果两个指定的浮点数组彼此相等,则此方法返回 true。
静态布尔等于(float[] a,int aFromIndex,int aToIndex,float[] b,int bFromIndex,int bToIndex) 如果指定范围内的两个指定浮点数组彼此相等,则此方法返回 true。
静态布尔等于(int[] a,int[] a2) 如果两个指定的整数数组相等,则此方法返回 true。
静态布尔等式(int[] a、int afromindex、int[] b、int bfromindex、int bToIndex) 如果指定范围内的两个指定整数数组彼此相等,则此方法返回 true。
静态布尔等于(long[] a,int aFromIndex,int aToIndex,long[] b,int bFromIndex,int bToIndex) 如果指定范围内的两个指定的长数组彼此相等,则此方法返回 true。
静态布尔值等于(long[] a,long[] a2) 如果两个指定的长数组相等,则此方法返回 true。
静态布尔等于(short[] a,int aFromIndex,int aToIndex,short[] b,int bFromIndex,int bToIndex) 如果指定范围内的两个指定短路数组彼此相等,则此方法返回 true。
静态布尔等于(短[] a,短[] a2) 如果两个指定的短路数组相等,则此方法返回 true。
静态布尔等于(对象[] a,int aFromIndex,int aToIndex,对象[] b,int bFromIndex,int bToIndex) 如果指定范围内的两个指定对象数组彼此相等,则此方法返回 true。
静态布尔等于(对象[] a,对象[] a2) 如果两个指定的对象数组彼此相等,则此方法返回 true。
静态布尔等于(T[] a,int aFromIndex,int aToIndex,T[] b,int bFromIndex,int bToIndex,Comparator super T> cmp) 如果指定范围内的两个指定对象数组彼此相等,则此方法返回 true。

equals()方法的示例

在下面的例子中,我们有两个数组array1array2。两个对应的数组元素相等,因此将返回true

import java.util.Arrays; 
public class StudyTonight 
{ 
    public static void main(String[] args) 
    { 
        int[] array1 = new int [] {1, 2, 3, 4}; 
        int[] array2 = new int [] {1, 2, 3, 4}; 
        if(Arrays.equals(array1, array2))
        {
            System.out.println("Both Arrays Are Equal");
        }
        else
        {
            System.out.println("Both Arrays Are Not Equal");
        }
    } 
}

两个数组相等

还有另一种equals()重载方法,用于对数组进行切片。我们需要传递开始和结束索引来比较任何数组。

数组切片的 equals()方法示例

下面的例子与上面的例子相同,但是我们可以通过传递两个数组的开始索引结束索引 来分割数组。本例中,我们比较了排列 1排列 2 ,从索引 2 到 8 ,从 4 到 10。

import java.util.Arrays; 
public class StudyTonight 
{ 
    public static void main(String[] args) 
    { 
        int[] array1 = new int [] {1, 7, 9, 11, 21, 2, 3,9, 4, 12, 47, 85, 2, 62, 14, 72, 11, 4}; 
        int[] array2 = new int [] {1, 12, 41, 71, 22, 36, 4, 6, 12, 2, 12, 15, 16, 22, 18, 3, 4}; 
        if(Arrays.equals(array1,2,8,array2,4,10))
        {
            System.out.println("Both Arrays Are Equal");
        }
        else
        {
            System.out.println("Both Arrays Are Not Equal");
        }
    } 
}

两个数组不相等

对象数组的 equals()方法示例

下面的例子说明了如何将equals()方法也应用于对象数组。由于这个对象不是原始数据类型,我们需要为我们的对象覆盖一个equals()方法,在我们的例子中,我们Student 是一个对象。

import java.util.Arrays;
class Student
{
    String stud_name;
    int roll_no;
    Student(String stud_name, int roll_no){
        this.stud_name = stud_name;
        this.roll_no = roll_no;
    }
    //overrifing equals method
    public boolean equals(Object obj) 
    {
        Student s = (Student)obj; 
        return (this.stud_name == s.stud_name && this.roll_no==s.roll_no); 
    } 
}
class StudyTonight { 
    public static void main(String args[]) 
    { 
        Student array1[][] = { 
                { new Student("AAA",123), new Student("BBB",789) }, 
                { new Student("CCC",183), new Student("DDD",445) }, 
                { new Student("EEE",693), new Student("FFF",348) } }; 

        Student array2[][] = { 
                { new Student("AAA",123), new Student("BBB",789) }, 
                { new Student("CCC",183), new Student("DDD",445) }, 
                { new Student("EEE",693), new Student("FFF",348) } };         

        if(Arrays.deepEquals(array1, array2))
        {
            System.out.println("Both arrays are equal");
        }
        else
        {
            System.out.println("Both arrays are not equal");
        }
    } 
}

两个数组不相等

equals()方法示例所有重载方法

在下面的示例中,我们实现了 equals()方法的所有重载方法。如果两个数组相等,此方法将返回 true,否则将返回 false 值。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        byte byteArray1[] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60}; 
        byte byteArray2[] = {35, 40, 45, 50, 55, 60,5, 10, 15, 20, 25, 30}; 
        System.out.println("Arrays.equals(byteArray1,byteArray2): "+Arrays.equals(byteArray1,byteArray2));
        System.out.println("Arrays.equals(byteArray1, 0, 5, byteArray2, 0, 5): "+Arrays.equals(byteArray1, 0, 5, byteArray2, 0, 5));        

        char charArray1[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'}; 
        char charArray2[] = {'d', 'e', 'f', 'g', 'h', 'i','a', 'b', 'c', 'd', 'e'}; 
        System.out.println("Arrays.equals(charArray1,charArray2): "+Arrays.equals(charArray1,charArray2));
        System.out.println("Arrays.equals(charArray1, 0, 5, charArray2, 0, 5): "+Arrays.equals(charArray1, 0, 5, charArray2, 0, 5));    

        int intArray1[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150};
        int intArray2[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150};
        System.out.println("Arrays.equals(intArray1, intArray2): "+Arrays.equals(intArray1, intArray2));
        System.out.println("Arrays.equals(intArray1, 0, 5, intArray2, 0, 5): "+Arrays.equals(intArray1, 0, 5, intArray2, 0, 5));    

        double doubleArray1[] = {5.1, 6.2, 7.2, 8.1, 9.4, 10.2, 11.6, 12.96, 13.2, 14.25, 15.6, 16.4, 17.2}; 
        double doubleArray2[] = {6.2, 7.2, 8.1, 9.4, 10.2, 11.6, 12.96, 13.2,5.1, 6.2, 7.2, 8.1, 9.4}; 
        System.out.println("Arrays.equals(doubleArray1, doubleArray2): "+Arrays.equals(doubleArray1, doubleArray2));
        System.out.println("Arrays.equals(doubleArray1, 0, 5, doubleArray2, 0, 5): "+Arrays.equals(doubleArray1, 0, 5, doubleArray2, 0, 5));    

        float floatArray1[] = {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f, 10f}; 
        float floatArray2[] = {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f, 10f}; 
        System.out.println("Arrays.equals(floatArray1, floatArray2): "+Arrays.equals(floatArray1, floatArray2));
        System.out.println("Arrays.equals(floatArray1, 0, 5, floatArray2, 0, 5): "+Arrays.equals(floatArray1, 0, 5, floatArray2, 0, 5));    

        short shortArray1[] = {12, 14, 16, 18, 20, 2, 4, 6, 8}; 
        short shortArray2[] = {2, 4, 6, 8, 10, 3, 12, 5, 32, 16}; 
        System.out.println("Arrays.equals(shortArray1, shortArray2): "+Arrays.equals(shortArray1, shortArray2));
        System.out.println("Arrays.equals(shortArray1, 0, 5, shortArray2, 0, 5): "+Arrays.equals(shortArray1, 0, 5, shortArray2, 0, 5));    
    }
}

Arrays.equals(byteArray1,byteArray2):false arrays . equals(bytearray 1,0,5,bytearray 2,0,5):false arrays . equals(chararray 1,charArray2):false arrays . equals(chararray 1,0,5,chararray 2,0,5):false arrays . equals(intarray 1,intArray2):true arrays . equals(intarray 1,0,5,intarray 2,0,5): true 【T6

结论

在本教程中,我们从 Arrays 类中学习了 equal()方法。这种方法有两种变体,一种是不切片public static boolean equals(Object[] array1,Object[] aarray2),另一种是切片public static boolean equals(Object[] array1,int FromIndex,int ToIndex,Object[] array2,int FromIndex,int ToIndex)