Java程式檢查兩個陣列是否相等


介紹

在 Java 中,我們可以透過比較兩個陣列的元素來檢查它們是否相等。如果兩個陣列中的元素相同且順序相同,則這兩個陣列被認為是相等的。

檢查兩個陣列相等的一種方法是使用 java.util 包提供的 Arrays.equals 方法。此方法將兩個陣列作為引數,並返回一個布林值,指示它們是否相等。該方法按相同順序比較陣列的元素,因此,如果元素的順序不重要,則需要先對陣列進行排序,然後才能使用此方法進行比較。

檢查兩個陣列相等的另一種方法是自己編寫方法。我們可以建立一個方法,迭代兩個陣列的元素並比較它們的值。如果任何一對對應元素不相等,則該方法返回 false。如果兩個陣列的所有對應元素都相等,則該方法返回 true。這種方法很簡單,並且允許我們根據需要自定義比較邏輯。但是,它需要更多程式碼,並且可能不如內建方法高效。

方法

方法 1:使用預定義方法

Arrays.equals 方法,它是 java.util 包提供的內建方法。這種方法簡單高效,因為 Arrays.equals 方法為我們處理了比較邏輯。但是,需要注意的是,此方法按相同順序比較陣列的元素,因此,如果元素的順序不重要,則需要先對陣列進行排序,然後才能使用此方法進行比較。

方法

  • 首先,我們宣告並初始化兩個具有相同元素的整數陣列 arr1 和 arr2。

  • 接下來,我們使用 arr1 和 arr2 作為引數呼叫 Arrays.equals 方法,並將返回值儲存在布林變數 isEqual 中。

  • Arrays.equals 方法按相同順序比較兩個陣列的元素,如果它們相等則返回 true,否則返回 false。

  • 最後,我們根據 isEqual 的值列印一條訊息,指示這兩個陣列是否相等。

示例

此 Java 程式使用 java.util 包提供的 Arrays.equals 方法檢查兩個陣列的相等性。

import java.util.Arrays;

public class ArrayEquality {

   public static void main(String[] args) {
      int[] arr1 = {1, 2, 3, 4};
      int[] arr2 = {1, 2, 3, 4};
      boolean isEqual = Arrays.equals(arr1, arr2);
      if (isEqual) {
         System.out.println("The two arrays are equal.");
      } else {
         System.out.println("The two arrays are not equal.");
      }
   }
}

解釋

在這種方法中,我們使用 Arrays.equals 方法來比較兩個陣列。此方法將兩個陣列作為輸入,並返回一個布林值,指示它們是否相等。該方法首先檢查陣列的長度,然後迭代陣列的元素並檢查它們是否相等。

在 main 方法中,我們定義了兩個整數陣列 arr1 和 arr2,並將它們作為引數傳遞給 Arrays.equals 方法。然後,我們根據方法的返回值列印一條訊息,指示陣列是否相等。

輸出

這種方法比之前的方法更簡單、更簡潔,但對於非常大的陣列來說,它可能效率不高,因為 Arrays.equals 方法會建立一個臨時陣列來儲存比較結果。

The two arrays are equal.

方法 2:不使用預定義函式

此方法可以透過更改方法簽名和比較陣列元素的迴圈中的比較運算子來擴充套件以用於其他型別的陣列。

方法

  • 定義一個方法 checkEquality,它將兩個陣列作為輸入,並返回一個布林值,指示陣列是否相等。

  • 首先,檢查任一陣列是否為空,或者它們是否具有不同的長度。如果這兩個條件中的任何一個為真,則返回 false。

  • 如果兩個陣列具有相同的長度,則迭代兩個陣列的元素並比較相應的元素。如果任何一對對應元素不相等,則返回 false。

  • 如果該方法尚未返回 false,則表示兩個陣列的所有對應元素都相等。因此,返回 true。

  • 在 main 方法中,定義兩個陣列並將它們作為引數傳遞給 checkEquality 方法。根據方法的返回值列印一條訊息,指示陣列是否相等。

示例

public class ArrayEquality {

   public static void main(String[] args) {
      int[] arr1 = {1, 2, 3, 4};
      int[] arr2 = {1, 2, 3, 4};
      boolean isEqual = checkEquality(arr1, arr2);
      if (isEqual) {
         System.out.println("The two arrays are equal.");
      } else {
         System.out.println("The two arrays are not equal.");
      }
   }

   public static boolean checkEquality(int[] arr1, int[] arr2) {
      if (arr1 == null || arr2 == null || arr1.length != arr2.length) {
         return false;
      }
      for (int i = 0; i < arr1.length; i++) {
         if (arr1[i] != arr2[i]) {
            return false;
         }
      }
      return true;
   }
}

解釋

在此程式中,我們定義了一個 checkEquality 方法,該方法將兩個整數陣列作為引數,並返回一個布林值,指示它們是否相等。該方法首先檢查任一陣列是否為空或它們是否具有不同的長度,在這種情況下,它會立即返回 false。否則,它會迭代陣列的元素並檢查它們是否相等。如果它找到任何不匹配的元素,它將返回 false,否則它將返回 true。

輸出

The two arrays are equal.

在 main 方法中,我們定義了兩個整數陣列 arr1 和 arr2,並將它們作為引數傳遞給 checkEquality 方法。然後,我們根據方法的返回值列印一條訊息,指示陣列是否相等。在這種情況下,由於兩個陣列都具有相同順序的相同元素,因此程式將輸出“這兩個陣列相等”。如果陣列具有不同的元素或順序不同,則程式將輸出“這兩個陣列不相等”。

結論

  • 在 Java 中,我們可以透過比較兩個陣列的元素來檢查它們是否相等。有不同的方法可以實現這一點,包括使用內建的 Arrays.equals 方法、編寫自己的方法來比較元素,或使用其他技術(如排序或雜湊)。如果元素的順序不重要,則可以在使用 Arrays.equals 方法進行比較之前先對陣列進行排序,或者使用其他技術(如雜湊或將陣列轉換為集合)。

  • java.util 包提供的 Arrays.equals 方法是檢查兩個陣列相等性的簡單有效的方法。它按相同順序比較兩個陣列的元素,如果它們相等則返回 true,否則返回 false。此方法適用於大多數元素順序重要的場景。

更新於: 2023年4月10日

2K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告