在 Java 中比較陣列

Mehvish Ashiq 2023年1月30日 2022年4月22日
  1. 在 Java 中使用 == 運算子比較陣列
  2. 使用 Arrays.equals() 方法比較 Java 中的陣列
  3. 使用 Arrays.deepEquals() 方法比較 Java 中的陣列
  4. 使用 for 迴圈比較 Java 中的陣列
在 Java 中比較陣列

今天,我們將編寫不同的程式碼片段來比較 Java 中的陣列。我們將看到如何使用 == 運算子、Arrays.equals()Arrays.deepEquals() 以及包含 for 迴圈的自定義函式來比較 Java 中的陣列。

在 Java 中使用 == 運算子比較陣列

示例程式碼:

public class compareArrays{
    public static void main(String[] args){
        int array1[] = {2, 4, 6};
        int array2[] = {2, 4, 6};
        if (array1 == array2)
            System.out.println("Both arrays are the same");
        else
            System.out.println("Both arrays are not the same");
    }
}

輸出:

Both arrays are not the same

main 函式中,我們有兩個陣列 array1array2,指的是兩個不同的物件。因此,比較兩個不同的參考變數,導致 Both arrays are not the same

使用 Arrays.equals() 方法比較 Java 中的陣列

示例程式碼:

import java.util.Arrays;

public class compareArrays{
    public static void main(String[] args){
        int array1[] = {2, 4, 6};
        int array2[] = {2, 4, 6};
        if (Arrays.equals(array1, array2))
            System.out.println("Both arrays are the same");
        else
            System.out.println("Both arrays are not the same");
    }
}

輸出:

Both arrays are the same

這個 main 方法還包含兩個名為 array1array2 的陣列。在這裡,我們使用位於 Arrays Class 中的 Arrays.equals() 方法並獲取兩個陣列並比較它們的內容。

假設我們有兩個需要比較的二維陣列。我們能否利用上面給出的相同方法進行深度比較?不。

在 Java Arrays 類中,我們有各種基本型別的 equals() 方法,例如 int、char 等。Object 類有一個 equals() 方法,但我們不能使用它對二維陣列進行深度比較。

示例程式碼:

import java.util.Arrays;

public class compareArrays{
    public static void main(String[] args){
        int innerArray1[] = {2, 4, 6};
        int innerArray2[] = {2, 4, 6};
        Object outerArray1[] = {innerArray1};
        Object outerArray2[] = {innerArray2};

        if (Arrays.equals(outerArray1, outerArray2))
            System.out.println("Both arrays are the same");
        else
            System.out.println("Both arrays are not the same");
    }
}

輸出:

Both arrays are not the same

我們可以使用 deepEquals() 方法進行深度比較,如果我們有二維陣列,這將很有幫助。

使用 Arrays.deepEquals() 方法比較 Java 中的陣列

示例程式碼:

import java.util.Arrays;

public class compareArrays{
    public static void main(String[] args){
        int innerArray1[] = {2, 4, 6};
        int innerArray2[] = {2, 4, 6};
        Object outerArray1[] = {innerArray1};
        Object outerArray2[] = {innerArray2};

        if (Arrays.deepEquals(outerArray1, outerArray2))
            System.out.println("Both arrays are the same");
        else
            System.out.println("Both arrays are not the same");
    }
}

輸出:

Both arrays are the same

deepEquals() 方法適用於深度比較。Arrays.deepEquals() 方法檢查兩個陣列是否相等。

這兩個陣列可以是一維的、二維的,甚至是多維的。

此方法如何確定提供的陣列是否相等?為此,你必須牢記以下幾點:

  • 如果兩個提供的陣列的引用均為空,則陣列將非常相等。
  • 如果兩個陣列引用指向包含確切元素數量和對應元素對的陣列,我們可以宣告它們完全相等。
  • 如果以下列表中的任何一個條件成立,則可能為 null 的兩個元素 element1element2 將完全相等:
    • 如果兩個陣列的型別都是物件引用,則 Arrays.deepEquals(element1, element2) 返回 true。
    • 如果兩個陣列都屬於精確的原始型別,則 Arrays.equals(element1, element2) 返回 true。
    • `element1 == element2·
    • element1.equals(element2) 返回 true。

使用 for 迴圈比較 Java 中的陣列

示例程式碼:

public class compareArrays{

    public static boolean compare(int[] array1, int[] array2) {

        boolean flag = true;

        if (array1 != null && array2 != null){
          if (array1.length != array2.length)
              flag = false;
          else
              for (int i = 0; i < array2.length; i++) {
                  if (array2[i] != array1[i]) {
                      flag = false;
                  }
            }
        }else{
          flag = false;
        }

        return flag;
    }

    public static void main(String[] args){
        int array1[] = {2, 4, 6};
        int array2[] = {2, 4, 6};

        if (compare(array1,array2))
            System.out.println("Both arrays are the same");
        else
            System.out.println("Both arrays are not the same");
    }
}

輸出:

Both arrays are the same

在這裡,我們編寫了一個 compare() 函式,它將兩個陣列轉換為 int 型別。它使用 for 迴圈在單個元素級別上比較它們,如果兩個陣列相同則返回 true;否則為假。

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相關文章 - Java Array