我编写了以下代码来确定两个相同大小的数组是否相同:
retVal = true;
for (int i = 0; i < array1.size(); i++) {
if (array1.get(i) != array2.get(i)){
retVal = false;
break;
}
}
在一些无法解释的情况下,if 语句返回 true,尽管事实并非如此(在调试器中检查)。在其他方面,它给出了正确的结果。 我通过执行以下简单修复修复了它:
int val1, val2;
retVal = true;
for (int i = 0; i < array1.size(); i++) {
val1 = array1.get(i);
val2 = array2.get(i);
if (val1 != val2) {
retVal = false;
break;
}
}
知道原因是什么吗?
最佳答案
你的数组保存着什么? 字符串
s?
如果是这样,那么你就不能在Java中使用==
来比较字符串。您需要使用equals
方法。
所以你的比较将变成:
if (array1.get(i).equals(array2.get(i)))
如果它们持有其他类型的对象,那么您需要确保这些对象中的 equals
方法是如何定义的。
关于java - ArrayList.get(i) 给出的结果不可靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24183054/