问题描述
|
我正在尝试从HashMap列表中删除项目,并且在查看控制台输出时,很明显,正在比较的字符串是相等的,并且我正在使用.equals(String x)方法进行比较,但是此输出始终显示为false,并且没有任何内容从列表中删除。有人可以给我提示我在这里做错了什么吗?
public void removeWord(String wd) {
Log.println(Log.INFO,\"Initial Size\",\"Initial size\" + String.valueOf(allWords.size()));
for (int x = 0; x < allWords.size(); x++) {
Log.println(Log.INFO,\"Current Word\",allWords.get(x).get(\"Long\") + \" \" + wd);
Log.println(Log.INFO,\"Equality?\",String.valueOf(allWords.get(x).get(\"Long\").toupperCase().equals(wd)));
if (allWords.get(x).get(\"Long\").toupperCase().equals(wd)) {
allWords.remove(x);
Log.println(Log.INFO,\"Removed something\",\"Removed Something!!!!\");
clearadapter();
}
}
Log.println(Log.INFO,\"Size of list\",\"Size of list\" + String.valueOf(allWords.size()));
}
解决方法
您正在将映射到
\"Long\"
的String的大写值与wd
的原始值进行比较。除非以大写形式传递wd
,否则您可能会关闭。尝试使用equalsIgnoreCase
,并通过调用trim
来确保两个字符串都没有开头或结尾空格。希望对您有所帮助!
,解决问题时,可能是由于字符串中的多余的不可见字符或值引起的-还尝试比较日志中的长度-您应使用迭代器遍历所有单词和迭代器的remove方法,或者可能会得到不一致的迭代。