如何比较两个数组是否相等(Java)

柔情只为你懂 2022-04-13 05:26 397阅读 0赞

在代码过程中, 可能有coder跟我一样遇到,需要比较两个数组是否相等?
下面展示常用的两种方法:

1.遍历数组
一般可能大家会使用for循环对两个数组进行遍历, 在遍历过程中, 比较两个两个数组的每一位是否相等, 如果出现不相等, 则返回false. 类似于以下代码:

  1. public boolean isEqual(int[] array1, int [] array2){
  2. for(int i = 0; i < array1.length; i++){
  3. if(array1[i] != array2[i]){
  4. return false;
  5. }
  6. }
  7. return true;
  8. }

2. 使用Arrays.equals()
其实在java中, 也可以使用Arrays.equals(数组1, 数组2), 这里数组1和数组2一般是相同类型的数组, 比如都是int 或者都是String, char. 比较数组的代码如下

  1. public boolean isEqual(int[] array1, int [] array2){
  2. if(Arrays.equals(array1, array2)){
  3. return true;
  4. }
  5. return false;
  6. }

其实, 如果阅读一下源码, 可以发现其实Arrays.equals() 与数组遍历的方式 可以说是一样的.
以下是Jdk1.8中关于Arrays.equals()源码部分

  1. public static boolean equals(int[] a, int[] a2) {
  2. if (a==a2) //如果两个数组的指向的地址一样, 则肯定相等
  3. return true;
  4. if (a==null || a2==null) //如果两个数组中有一个为null, 则返回false
  5. return false;
  6. int length = a.length;
  7. if (a2.length != length) //如果两个数组的长度不相等, 则返回false
  8. return false;
  9. for (int i=0; i<length; i++) //最后才是遍历数组, 比较数组中的每一位是否相等, 如果出现不相等, 则返回false
  10. if (a[i] != a2[i])
  11. return false;
  12. return true;
  13. }

发表评论

表情:
评论列表 (有 0 条评论,397人围观)

还没有评论,来说两句吧...

相关阅读