我想从HashMap列表中删除项目,并且在查看控制台输出时,它清楚地表明被比较的字符串是相等的,并且我使用.equals(String x)方法来比较,但是这个输出持续显示为false,并且没有任何东西从列表中移除。任何人都可以给我一个暗示,我在这里做错了什么?Java中使用ArrayList的HashMaps的字符串相等性?我正在使用.equals()
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()));
}
你正在比较的单词是否有一些空白,你没有考虑?尝试allWords.get(x).get(“Long”)。toUpperCase()。trim()。equals(wd) – 2011-05-25 00:01:03
为什么在一个String中使用'toUpperCase()'而不在另一个?你能保证'wd'总是大写吗? – 2011-05-25 00:03:29
我不禁注意到你的调试输出不包含'toUpperCase();'但你的调试equals()和你的if。 – Andreas 2011-05-25 00:04:58