我想從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