Java TreeMap containsKey总是返回true?

时间:2009-12-01 20:34:00

标签: java treemap containskey

我正在编写一个使用TreeMap接口的Java程序,而我遇到了containsKey的问题。即使我给containsKey,我确实知道某些东西不在TreeMap中,它也会返回true。

这可能是什么原因?

非常感谢。

-

编辑:我正在编写一个程序来计算文本文件中单词的出现次数。这些单词被解析,每个单词都是一个类的新实例。在这些类中,重写了equals和hashCode方法,因为即使它们是不同的对象,这些单词也需要被视为等号。

字段“text”包含单词文本的字符串。

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 个答案:

答案 0 :(得分:3)

我的猜测是你使用的密钥类型equals的执行方式不正确(也可能是hashCode),或者比较器与equals不一致。我无法想到任何其他原因。

如果您可以制作一个简短但完整的程序来证明问题,我们可以确认一下。