Java TreeMap содержит ключ, неизменно возвращающий истину?
Я пишу Java-программу, использующую интерфейс TreeMap, и у меня возникла проблема с containsKey. Он возвращает истину, даже когда я даю в поле "содержит" то, что, как я знаю, отсутствует в древовидной карте.
Что может быть причиной этого?
Большое спасибо заранее.
-
Редактировать: я пишу программу, которая подсчитывает вхождения слов в текстовом файле. Слова анализируются, и каждое из них является новым экземпляром класса. В этих классах методы equals и hashCode переопределяются, потому что слова должны рассматриваться как равные, даже если они являются разными объектами.
Поле "текст" представляет собой строку, содержащую текст слова.
public boolean equals(Object obj){
Word temp = ((Word)obj);
return this.text.equals(temp.text);
}
public int hashCode(){
return this.text.hashCode();
}
public int compareTo (Object x) {
Word temp = ((Word)x);
if(this.text.compareTo(temp.text) < 0){
return -1;
}
else if (this.text.equals(temp.text)){
return 0;
}
else {
return 1;
}
}
1 ответ
Я предполагаю, что вы используете тип ключа, который имеет неправильную реализацию equals
(и, вероятно, hashCode
тоже), или что компаратор не соответствует equals
, Я не могу думать ни о какой другой причине с моей головы.
Если вы можете создать короткую, но полную программу, демонстрирующую проблему, мы можем подтвердить это.