我如何比较两个数组?

时间:2014-03-20 00:45:58

标签: java arrays

如何比较两个数组的大小和内容?

在使用构造函数的类中,我创建了这个equals()方法:

public boolean equals(VarArray otherArray) {
    if ((myInts.equals(otherArray)))) { 
        return true;
    }else {
        return false;
    }
}

这就是我在我测试的课程中的方法,我仍然得到false而不是true

int[] array = {0,1,2,3,4,5,6,7,8,9,10};

VarArray testArray = new VarArray(array);
VarArray testArray2 = new VarArray(array);

System.out.println("\n" + testArray.equals(testArray2)); // should be true

4 个答案:

答案 0 :(得分:4)

使用Arrays.equals(testArray, testArray2);

答案 1 :(得分:0)

otherArray的类型为VarArray,您需要将其与int的数组进行比较。你想要的是:

public boolean equals(VarArray otherArray) {
   return Arrays.equals(myInts, otherArray.myInts);
}

答案 2 :(得分:0)

Arrays.deepEquals()将执行深度比较,这也将检查任何嵌套元素。

public boolean equals(VarArray otherArray) {
    return Arrays.deepEquals(myInts, otherArray.getInts());
}

答案 3 :(得分:0)

你对平等的贬低是错误的。在你的情况下,它将调用数组的equals方法,它将比较两个不同数组的对象实例。正确实现equals方法将如下所示:

public class VarArray
{

    private int[] myInts = null;

    private int[] getMyInts()
    {
        return myInts;
    }

    public VarArray(int[] arr)
    {
        myInts = arr;
    }

    public boolean equals(VarArray otherArray)
    {
        if (myInts == null && otherArray == null)
        {
            return true;
        }

        if (myInts == null || otherArray == null)
        {
            return false;
        }

        if (myInts.length != otherArray.getMyInts().length)
        {
            return false;
        }

        int[] otherMyInts = otherArray.getMyInts();
        for (int i = 0; i < myInts.length; i++)
        {
            if (myInts[i] != otherMyInts[i])
            {
                return false;
            }
        }

        return true;
    }
}

或者如果你不想写这样的代码,我认为这浪费时间和精力使用java.util.Arrays并使用这段代码

int[] array = {0,1,2,3,4,5,6,7,8,9,10};
        int[] array1 = {0,1,2,3,4,5,6,7,8,9,10};
boolean isEqual = Arrays.equals(array, array1);
        System.out.println(isEqual);