两个Java字符串表示它们不相等

时间:2011-11-23 07:56:46

标签: java string arraylist

我有两个arraylists,一个包含字符串,另一个包含具有String数据成员的类。目标是递归第二个arraylist中的对象,并找到哪个对象的字符串数据成员等于第一个arraylist中的字符串值。

现在我明白你不能使用==运算符来比较字符串,所以我最初使用了equals方法,现在我已经尝试了contentEquals方法,但无论我选择哪种方法,字符串总是被归类为相等 - 即使他们不是。因此,每当我运行下面的代码时,无论字符串是否实际相等,“if”语句在第一次调用时总是返回true。

Iterator stringListIter = stringList.iterator();
Iterator objectListIter = objectList.iterator();
while (stringListIter.hasNext())
{
    String currentString = (String) stringListIter.next();
    while (objectListIter.hasNext())
    {
        MyObject currentObject = (MyObject) objectListIter.next();
        String objectString = currentObject.getString();
        if (objectString.contentEquals(currentString));
        {
            //Do something here.....
            break;
        }
    }
}

非常感谢任何帮助。我觉得它可能是相当简单的东西,但我看不到它。

4 个答案:

答案 0 :(得分:10)

问题是你有一个无关的分号:

if (objectString.contentEquals(currentString));

此语句基本上不执行任何操作,因此始终执行以下块。

答案 1 :(得分:1)

尝试使用

stringOne.equals(stringTwo)

stringOne.equalsIgnoreCase(stringTwo)

用于比较字符串。

答案 2 :(得分:0)

如果每个对象只包含一个正被访问的字符串,那么我只需在对象中创建一个toString()方法并使用.Equals()方法。

例如:

if (ObjectString.Equals(CurrentString));
    {
        //Do something here.....
        break;
    }

在你的对象中只需创建一个toString()方法,如下所示:

public string toString()
{
    return yourStringHere;
}

试一试。

答案 3 :(得分:0)

尝试使用objectString.equalsIgnoreCase(currentString)而不是objectString.contentEquals(currentString),并且在此代码中由于if语句后面的分号会产生错误,否则它将正常运行。