如何比较两个数组的大小和内容?
在使用构造函数的类中,我创建了这个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
答案 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);