Java,搜索两个ArrayList不起作用

标签 java arraylist

我对下面的代码感到害怕,并惊讶于它不起作用。在这里,我想按照我想要的方式比较两个 ArrayList,如下所示。所以我无法获得“绿色”的匹配,只是因为它被添加到 ww 列表中,其中包含一个包含“绿色”的空间,即使我使用了 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

最佳答案

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

if(x.equals(y))

具体来说,虽然常量池中存在“Orange”(对于使用它的两种情况都具有相同的引用),但存在“Green”的两个实例——其中一个在常量池中。以及由 String#trim() 返回的一个。

关于Java,搜索两个ArrayList不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343523/

相关文章:

java - 在 LinkedList 和 ArrayList 之间没有明显优势的情况下,应该使用哪个?

java - 让 Android 服务监听硬件键按下事件

java - 检查枚举类型是否包含具有给定名称的常量

java - 循环内循环 - 显示ArrayList

java - java中数组索引越界

java - ArrayList.clear() 与 ArrayList=null

java - Android Google Map API v2 - 膨胀类 fragment 时出错 android.view.InflateException

java - 使用 BigInteger 检查回文

java - 将链接列表转换为数组列表

java - 在 Java 的 arrayList 中递增 Integer 的最佳方法