帮忙看看程序错误。有关HASHTABLE的自定义键类。
程序意图:自定义一个类,用做哈斯表的键,该类重写了hashCode equals这两个方法,但编译不通过,并没得出预期结果。请各位帮忙看看,留意注释。
import java.util.*;
class Hashtest
{
public static void main(String args[])
{
Hashtable hs=new Hashtable();
hs.put(new Mykey("joe",12),new Integer(1));
hs.put(new Mykey("alber",33),new Integer(2));
hs.put(new Mykey("bush",24),new Integer(3));
Enumeration e=hs.keys();
while (e.hasMoreElements())
{
Mykey m=(Mykey)e.nextElement();
System.out.print(m.toString()+"=");
System.out.println((Integer)hs.get(m));
}
Mykey m1=new Mykey("alber",33);
System.out.println((Integer)hs.get(m1));
//这句没得出预期结果,只得出null,但上面通过Enumeration接口就能迭代出所有的值。为什么这句这样写就不能得出相应的值?
}
}
class Mykey
{
private String name;
private int age;
public Mykey(String name,int age)
{
this.name=name;
this.age=age;
}
public String toString()
{
return new String(name+", "+age);
}
public boolean equals(Object obj)
{
if (name.equals(obj.name) && age==obj.age)
//这句提示不能解释name age,但把上面的object换成Mykey就通过编译。为什么不能用父类呢?它不能动态找到NAME及AGE吗?
return true;
else
return false;
}
public int hashCode()
{
return name.hashCode()+age;
}
}