我有两个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;
}
}
}
非常感谢任何帮助。我觉得它可能是相当简单的东西,但我看不到它。
答案 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语句后面的分号会产生错误,否则它将正常运行。