我对以下代码感到不安,并对它没有成功感到惊讶。在这里,我想以我想要的方式比较两个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
答案 0 :(得分:1)
您不能使用==
比较两个字符串的值相等。 ==
仅用于引用相等。将你的if条件修改为:
if(x.equals(y))
具体来说,虽然常量池中存在“橙色”(两种情况下都使用相同的参考),但存在两个“绿色”实例 - 一个在常量池中。和String#trim()
返回的一个。