Hashtable类
来源:互联网 发布:淘宝关键词排名搜索 编辑:程序博客网 时间:2024/05/14 13:03
Hashtable类用于快速的成对的检索数据,它不仅可以像Vector类一样动态存储一系列的对象,而且对存储的每一个对象(称为值)都要安排另一个对象(称为关键字)与之相关联。
比如,在Hashtable中可以存储多个国家的中文和英文名称,并且可以通过英文名称可以检索出对应的中文名称,这里的中文名称就是值,英文名称就是关键字。
要向Hashtable中存储数据,使用的Hashtable的put方法
Hashtable ht = new Hashtable();
ht.put("one",new Integer(1));
这个put方法接受两个参数,"one"为关健字对象,"new Integer(1)"为值对象。关键字和值对象都不能为null,而且Hashtable对象中不能有重复的关键字。
如果要从Hashtable中检索数据可以使用get方法,传递给get的参数就是关键字对象。通过关键字对象从而取出它在Hashtable中对应的值对象。
要想从Hashtable中成功的检索数据,用作这个Hashtable中关键字的类必须覆盖Object.hashCode方法和Object.equals方法。因为传递给get方法中的关键字对象需要与Hashtable中存储的关键字对象逐一的比较,看到底是取出哪个关键字所对应的值,这个判断的标准就是这两个关键字对象用equals方法进行比较的时候是否相同。另外一个要求它们的hashCode方法的返回值也必须相等。
下面来看一个例子:
public class MyKey {
private String name = null;
private int age = 0;
public MyKey(String name,int age)//构造函数
{
this.name = name;
this.age = age;
}
public boolean equals(Object obj)//覆盖equals方法
{
if(obj instanceof MyKey)//判断传递进来的对象是否是MyKey对象
{
MyKey objTemp = (MyKey)obj;//是MyKey对象,就把obj转换成MyKey对象
if(name.equals(objTemp.name) && age==objTemp.age)//字符串的比较一定要用equals方法
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
public int hasCode()//覆盖hasCode方法
{
return name.hashCode() + age;
}
public String toString()//覆盖toString方法
{
return name + "," + age;
}
}
import java.util.*;
public class HashtableTest {
public static void main(String[] args) {
Hashtable numbers = new Hashtable();
numbers.put(new MyKey("zhenzhen",18),new Integer(1));
numbers.put(new MyKey("kaikai",20),new Integer(2));
numbers.put(new MyKey("zhongzhong",22),new Integer(3));
Enumeration e = numbers.keys();//取出numbers里面的所有关键字的集合
while(e.hasMoreElements())//如果还有关键字
{
MyKey key = (MyKey)e.nextElement();//取出所有关键字
System.out.print(key+" = ");//打印所有关健字,其实是调用key.toString方法,所以必须在MyKey类中覆盖toString方法
System.out.println(numbers.get(key));//打印所有关健字的值
}
}
}
输出为:
zhongzhong,22 = 3
kaikai,20 = 2
zhenzhen,18 = 1
这样就完成了检索Hashtable类中所有的集合
- Hashtable类:
- hashTable类
- Hashtable 类
- Hashtable类
- Hashtable 类
- Hashtable类
- Hashtable类
- Hashtable类
- Hashtable类
- Hashtable 类
- Hashtable 类 || HashMap类
- Hashtable类的用法
- Hashtable和HashMap类
- Hashtable 容器类
- Javascript Hashtable 类
- Hashtable类的使用
- Java的Hashtable类
- 《java 中的 Hashtable类》
- TCP/IP 协议简单分析
- Printf参数详解
- printf详解
- 简单WebService示例
- error and pragma
- Hashtable类
- NetBeans 时事通讯(刊号 # 72 - Sep 15, 2009)
- C#制作Windows service服务系列二--演示一个定期执行的windows服务及调试
- 浅论家庭关系中的人生观
- “SCI之父”加菲尔德:SCI畸形地位是必经阶段 【转载】
- 软件开发流程
- 设置select 的手动输入功能
- Java的内存泄漏
- Spring2.x AOP的Pointcut定义