【发布时间】:2016-03-28 14:31:52
【问题描述】:
我对 Hashtable 类有疑问。我有一个实现方法 equals 的类 TmpClass。然后我创建一个 Hashtable,在我预定义的 equals 方法下,两个 TmpClass 对象相等。然后我把对象作为哈希表中的键。 但是当我测试第二个对象是否真的包含在哈希表中时,结果是“假”...
这是我的主要方法。
public static void main(String[] args){
Hashtable<TmpClass, Integer> list = new Hashtable<TmpClass, Integer>();
TmpClass v1 = new TmpClass(1);
list.put(v1, 1);
TmpClass v2 = new TmpClass(1);
if(v2.equals(v1))
System.out.println("Equals");
else System.out.println("Not equal");
if(list.containsKey(v2))
System.out.println("Contains");
else System.out.println("Not contain");
}
这是我的 TmpClass。
public class TmpClass {
private int val;
public TmpClass(int v){
val = v;
}
public boolean equals(Object o){
if(o instanceof TmpClass){
return val == ((TmpClass) o).val;
}
else return false;
}
}
在javadoc中明确写到,Hashtable的containsKey方法使用Object类的equals方法来比较key。有人解释为什么这里不满足继承属性吗?或者有人有其他方法来解决这个问题吗?
这对我很有帮助。谢谢。
【问题讨论】:
-
它有HashTable的 containsKey() 代码:if ((e.hash == hash) && e.key.equals(key))。
标签: java hashmap hashtable equals contains