Строковое равенство в Java с использованием ArrayList из HashMaps?Я использую .equals () - PullRequest
1 голос
/ 25 мая 2011

Я пытаюсь удалить элементы из списка HashMaps, и, глядя на вывод консоли, ясно видно, что сравниваемые строки равны, и я использую метод .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()));
}

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Вы сравниваете прописное значение строки, сопоставленной с "Long", с исходным значением wd.Если wd не введено в верхнем регистре, вы можете быть отключены.Попробуйте использовать equalsIgnoreCase, а также убедитесь, что обе строки не имеют начальных или конечных пробелов, вызвав trim.Я надеюсь, что это помогает!

1 голос
/ 25 мая 2011

Когда вы решаете проблему, которая может быть вызвана посторонними невидимыми символами в строке или значениями - попробуйте также сравнить длины в ваших журналах - вы должны использовать итератор для просмотра всех слов и метод удаления итератора, или вы может получить противоречивую итерацию.

...