1. 程式人生 > >如何比較兩個陣列是否相等(Java)

如何比較兩個陣列是否相等(Java)

在程式碼過程中, 可能有coder跟我一樣遇到,需要比較兩個陣列是否相等?
下面展示常用的兩種方法:

1.遍歷陣列
一般可能大家會使用for迴圈對兩個陣列進行遍歷, 在遍歷過程中, 比較兩個兩個陣列的每一位是否相等, 如果出現不相等, 則返回false. 類似於以下程式碼:

public boolean isEqual(int[] array1, int [] array2){
        for(int i = 0; i < array1.length; i++){
            if(array1[i] != array2[i]){
                return false;
            }
        }
        return true;
    } 

2. 使用Arrays.equals()
其實在java中, 也可以使用Arrays.equals(陣列1, 陣列2), 這裡陣列1和陣列2一般是相同型別的陣列, 比如都是int 或者都是String, char. 比較陣列的程式碼如下

public boolean isEqual(int[] array1, int [] array2){
        if(Arrays.equals(array1, array2)){
            return true;
        }
        return false;
    } 

其實, 如果閱讀一下原始碼, 可以發現其實Arrays.equals() 與陣列遍歷的方式 可以說是一樣的.
以下是Jdk1.8中關於Arrays.equals()原始碼部分

public static boolean equals(int[] a, int[] a2) {
        if (a==a2)    //如果兩個陣列的指向的地址一樣, 則肯定相等
            return true;
        if (a==null || a2==null) //如果兩個陣列中有一個為null, 則返回false
            return false;

        int length = a.length;
        if (a2.length != length)  //如果兩個陣列的長度不相等, 則返回false
            return false;

        for (int i=0; i<length; i++)  //最後才是遍歷陣列, 比較陣列中的每一位是否相等, 如果出現不相等, 則返回false
            if (a[i] != a2[i])
                return false;
        return true;
    }