Java,搜索两个ArrayLists不起作用

时间:2014-08-16 20:10:23

标签: java arraylist

我对以下代码感到不安,并对它没有成功感到惊讶。在这里,我想以我想要的方式比较两个ArrayLists,如下所示。所以我无法与#34; Green"只是因为它被添加到包含空格的ww列表中#34;绿色"即使我使用trim()但仍然无法正常工作。 非常感谢您的专业知识,帮助我解决这个奇怪的错误。

ArrayList<String> ww = new ArrayList();
ArrayList<String> mm = new ArrayList();
ww.add("Orange");
ww.add(" Green".trim());
mm.add("Orange");
mm.add("Green");

for ( String x:ww){
        for ( y:mm){
            if (x==y){
                System.out.println(x);
            }
        }
    }

跑完后:

Orange

1 个答案:

答案 0 :(得分:1)

您不能使用==比较两个字符串的值相等。 ==仅用于引用相等。将你的if条件修改为:

if(x.equals(y))

具体来说,虽然常量池中存在“橙色”(两种情况下都使用相同的参考),但存在两个“绿色”实例 - 一个在常量池中。和String#trim()返回的一个。