【发布时间】:2009-12-02 04:55:17
【问题描述】:
我正在编写一个使用 TreeMap 接口的 Java 程序,但我遇到了 containsKey 的问题。即使我给 containsKey 一些我确定不在 TreeMap 中的东西,它也会返回 true。
这可能是什么原因?
非常感谢。
--
编辑:我正在编写一个程序来计算文本文件中单词的出现次数。单词被解析,每个单词都是一个类的新实例。在这些类中,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;
}
}
【问题讨论】:
-
你能发布一些示例代码吗?
-
你的 compareTo 实现呢?
-
嗯...嗯,看起来还可以(尽管返回
this.text.compareTo(temp.text))会更简单) - 你有一个简短但完整的程序来证明它失败? -
TreeMap 实际上并不使用equals() 或hashCode()。它专门使用 compareTo()。
标签: java treemap containskey