Java TreeMap содержит ключ, неизменно возвращающий истину? - PullRequest
1 голос
/ 01 декабря 2009

Я пишу программу на Java, использующую интерфейс TreeMap, и у меня возникла проблема с containsKey. Он возвращает истину, даже когда я даю в поле «Ключ к чему-то», которого я точно не знаю, в TreeMap.

Что может быть причиной этого?

Заранее большое спасибо.

-

Редактировать: я пишу программу, которая считает слова в текстовом файле. Слова анализируются, и каждое из них является новым экземпляром класса. В этих классах методы 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 Ответ

3 голосов
/ 01 декабря 2009

Я предполагаю, что вы используете тип ключа, который имеет неправильную реализацию equals (и, вероятно, hashCode тоже) или что компаратор не соответствует equals. Я не могу думать ни о какой другой причине с моей головы.

Если вы можете создать короткую, но полную программу, демонстрирующую проблему, мы можем подтвердить это.

...