[英]How do I compare two 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
使用Arrays.equals(testArray, testArray2);
otherArray
的类型是VarArray
和你比较它的数组int
秒。 您想要的是:
public boolean equals(VarArray otherArray) {
return Arrays.equals(myInts, otherArray.myInts);
}
Arrays.deepEquals()
将执行深度比较,这还将检查是否有任何嵌套元素。
public boolean equals(VarArray otherArray) {
return Arrays.deepEquals(myInts, otherArray.getInts());
}
你对平等的追求是错误的。 在您的情况下,它将调用array的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.