问个Hashtable知道关键字提取值的问题.

iceJian 2005-10-18 10:06:01
代码和问题:
import java.util.*;
public class TestHashTable {

public static void main(String[] args) {
// TODO Auto-generated method stub
Hashtable h=new Hashtable();
MyKey z = new MyKey("zhangsan",18);
h.put(z,new Integer(1));
h.put(new MyKey("wangwu",12),new Integer(2));
h.put(new MyKey("lisi",29),new Integer(3));


Enumeration e=h.keys();
while(e.hasMoreElements())
{
MyKey key=(MyKey)e.nextElement();
System.out.print(key.tostring()+"=");
System.out.println(h.get(key));


}

System.out.println(h.get(z));
System.out.println(h.get(new MyKey("lisi",29)));///有问题,取不出3,显示NULL,哪里错了?

}

}
class MyKey {
private String name=null;
private int age=0;
MyKey(String name,int age){
this.name=name;
this.age=age;

}
public boolean equals(Object obj)
{
if(obj instanceof MyKey)
{
MyKey objTemp=(MyKey)obj;
if(name.equals(objTemp.name)&&age==objTemp.age)
{
return true;
}
else
{
return false;
}
}
else
return false;

}

public int hashcode()
{
return name.hashCode() +age;
}
public String tostring()
{
return(new String(name+","+age));

}

}
MyKey覆盖了equals和hashcode两个方法
...全文
180 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceJian 2005-10-19
  • 打赏
  • 举报
回复
1楼的believefym解决了此问题 谢谢啊
原来只差了个大小写 我晕
arsaluo 2005-10-18
  • 打赏
  • 举报
回复
哦,1楼是对的
这边为什么还要NEW啊
arsaluo 2005-10-18
  • 打赏
  • 举报
回复
System.out.println(h.get(new MyKey("lisi",29)));///有问题,取不出3,显示NULL,哪里错了?
~~~~
要在实例吗?
believefym 2005-10-18
  • 打赏
  • 举报
回复
public int hashcode()
改成 public int hashCode()
注意方法名称

另外,建议用HashMap代替HashTable

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧