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+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告