在 Java 中比較陣列

Mehvish Ashiq 2023年10月12日
  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
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