HashTable类不紧可以像Vector类一样动态的存储一系列的对象,而且对存储的每一个对象(称为值)都安排另一个对象(称为关键字)与它相关联。

用做关键字的类必须覆盖Object.hashCode方法和Object.equals方法,

因为要取出数据时,传递给get()方法的参数要跟里面的关键字比较,这时就要使用equals()方法。另外如果这两个关键字相等,他们的hashcode()返回值也要相等。

编程举例:使用自定义类作为hashtable()关键字的类。

public class MyKey

{

String name=null;

int age=0;

public boolean equals(Object obj) //作为关键字的类要覆盖该方法

{

if(obj instanceof MyKey) //如果它是mykey类型的,则先要转换为mykey类型,因为编译器不知道他是什么类型的

{

MyKey objtemp=(MyKey)obj; //然后下面再比较里面的内容是否相等。

if(name.equals(objtemp.name)&&age==objtemp.age)

{

return true; //如果内容也相等,则相等

}

else

{

return false; //否则不等

}

}

else

{

return false; //如果它不是mykey类型的,则肯定不相等,因为类型都不同

}

}

public int hashCode() //作为关键字的类要覆盖该方法

{

return name.hashCode()+age; //因为string类已经覆盖了hashcode()方法,stringbuffer类没有覆盖该方法,所以不可以用做关键字类。

//如果name和age有一个不等,返回值则不等

}

public MyKey(String name,int age) //覆盖构造函数

{

this.name=name;

this.age=age;

}

public String toString() //如果不覆盖这个方法,则会产生乱码

{

return name+","+age;

}

}

import java.util.*;

public class HashTableTest

{

public static void main(String[] args)

{

Hashtable numbers=new Hashtable(); //新建一个hashtable类的实例

numbers.put(new MyKey("ZhangSan",18),new Integer(1)); 装入数据

numbers.put(new MyKey("LiSi",20),new Integer(2));

numbers.put(new MyKey("WangWu",16),new Integer(3));

Enumeration e=numbers.keys();

while(e.hasMoreElements())

{

MyKey Key=(MyKey)e.nextElement();

System.out.print(Key+"=");

System.out.println(numbers.get(Key));

}

}

}

HashTable类的更多相关文章

  1. 数据结构和算法 – 7.散列和 Hashtable 类

    7.1.散列函数 散列是一种常见的存储数据的技术,按照这种方式可以非常迅速地插入和取回数据.散列所采用的数据结构被称为是散列表.尽管散列表提供了快速地插入.删除.以及取回数据的操作,但是诸如查找最大值 ...

  2. C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、SortedList类)

    1.ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在ArrayList中主要使用Add.Remove.RemoveAt.Insert四个方法对栈进行操作.Add方法 ...

  3. 转:C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、Sort)

    C#常用的集合类型(ArrayList类.Stack类.Queue类.Hashtable类.Sort) .ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在Array ...

  4. Java:HashTable类小记

    Java:HashTable类小记 对 Java 中的 HashTable类,做一个微不足道的小小小小记 概述 public class Hashtable<K,V> extends Di ...

  5. JDK源码阅读(5):HashTable类阅读笔记

    HashTable public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, ...

  6. HashTable类模板_C++

    好久没看数据结构了,今天终于要用到hash,整理一下写了个hash类模板 template<typename T> class DataType { public: T key; Data ...

  7. 【java源码】解读HashTable类背后的实现细节

    HashTable这个类实现了哈希表从key映射到value的数据结构形式.任何非null的对象都可以作为key或者value. 要在hashtable中存储和检索对象,作为key的对象必须实现has ...

  8. System.Collections空间下的Hashtable类与System.Collections.Specialized下的StringDictionary的一点小区别

    哎.有一周没有写自己的博客. 最近在做一个调用web服务的小程序,没有使用c#自动生成的代理类,而是使用http-get.post.以及soap的方式去请求的,使用这http请求这种方式需要自己去拼参 ...

  9. HashMap,LinkedHashMap和Hashtable类的深入剖析与理解

    上一篇文章写了一些关于HashMap以及HashMap的线程安全问题,这篇文章再来说说Map系列中HashMap,LinkedHashMap和Hashtable三者之间的差异以及该注意的地方. Has ...

随机推荐

  1. Python代码可视化

    把以下代码贴到这个网站: http://www.pythontutor.com l1 = [3, [66, 55, 44], (7, 8, 9)] l2 = list(l1) l1.append(10 ...

  2. jQuery EasyUI API 中文文档 - 表单(form补充)

    继承(表单验证) 第一个参数如果是true那么就算key相同也会接着追加,相反怎会覆盖 $.extend([bool],obj,obj1); var obj = {name:"zhangsa ...

  3. 安装kubernetes dashboard

    一.kubernetes dashboard kubernetes dashboard是k8s的web管理界面 二.安装 k8s的版本为1.5 1.创建dashboard-controller.yam ...

  4. webDriver API——第7部分Desired Capabilities

    The Desired Capabilities implementation. class selenium.webdriver.common.desired_capabilities.Desire ...

  5. OpenERP|ODOO高德地图应用

    发布时间:2015-04-06 11:01:37来源:http://www.chinamaker.net 在openerp中的fleet模块,每一个车辆都有地图应用.默认采用的是谷歌地图,但是在应用得 ...

  6. centos无法安装vmvare-tools的问题

    不要使用 vmware 自带的 tools, 版本太老了. 从这里下载:https://github.com/rasa/vmware-tools-patches.git 直接下载或者使用下面的命令: ...

  7. ML:交叉验证Cross-Validation

    PRML中首章绪论的模型选择,提到两个方法: 1.交叉验证(Cross-Validation) 2.赤池信息准则(Akaike Information Criterion),简称:AIC. 交叉验证是 ...

  8. Mysql 中 trim 的用法

    需求:去掉contract字段值中的% update gsfrankfurt set contract = trim(both "%" from contract);

  9. 解决 SQL Server2012附加出错的问题

    附加数据库出错 无法打开文件号 0 的文件 操作系统错误 根据错误提示:权限不足,添加相应权限就OK 步骤:1,右键单击要附加的数据库,选择安全选项卡选择用户:“Authenticated Users ...

  10. Win7各个版本之间的区别

    Windows7包含6个版本,分别为Windows7 Starter(初级版).Windows7 Home Basic(家庭普通版).Windows7 Home Premium(家庭高级版).Wind ...