首页 > 解决方案 > 无法比较 Java 中的 ArrayList 值

问题描述

我正在做一门 Java 课程,在一个练习中,我必须创建三个 ArrayList,要求用户用整数填充前两个,然后比较两个 ArrayList。

不重复的值被添加到第三个 ArrayList。我已经声明了 ArrayLists,使用了 Scanner 来允许用户填充 ArrayLists,这部分工作正常。

当我尝试比较两个 ArrayLists 时,问题就来了。我在这一行中收到各种警报(“if 语句是多余的”、“使用 == 或 !=" 比较整数值、翻转二元运算符的操作数”、“反转 if”)。

我怀疑我在 if 语句之后写的内容不是很干净,并且我可以得到一些评论(我不是 Java 专家),但我不理解 IDE 显示的警报。代码编译并运行得很好,直到遇到嵌套循环。请帮忙!谢谢。

       //Checking for values that dont repeat
        for(int i=0;i<listVector1.size();i++){
            for(int j=0;j<listVector2.size();i++){
                if(listVector1.get(i)==listVector2.get(j)){//Im getting an alert here
                 repeats=true; //this boolean was previously declared
                 } else {
                  repeats=false;
                }
            if(repeats==false){
                int newValue=listVector1.get(i);
                listVector3.add(newValue);
            }
        }

        }

标签: javafor-loopif-statementarraylistcompare

解决方案


这是这里真正的问题。

使用 == 或 != 比较的整数值

运算符比较两个对象的==引用。但是您真正想要做的是比较存储在引用中的值。因此,您需要使用equals运算符。

或者您可以将其中一个值显式转换为int并使用==这些值,例如

if(listVector1.get(i) == ((int)listVector2.get(j))){
     repeats=true; 
} else {
     repeats=false;
}

如需更多阅读,您可以 google difference between == and equals operator


推荐阅读