java - ArrayList.get(i) 给出的结果不可靠

标签 java

我编写了以下代码来确定两个相同大小的数组是否相同:

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/

相关文章:

java - JSP 需要重新编译吗?

java - 如何解决错误代码:IotHubUnauthorizedAccess;Unauthorized?

java - 在不知道 JSON 格式的情况下用 Java 解析 JSON

java - 如何刷新 Tableview 中的特定行或单元格

java - 用于处理基元和基元数组/集合的 GUI 库

java - Jersey/web.xml/Servlet 路由问题

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException。 WHERE 子句

java - LocationService.FusedLocation 仅在某些设备上返回 null

java - 静态内容在项目重启之前不会更新 - Spring Boot 和 Eclipse

java - Java 中的 "static{}"是什么?