HashTable类
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类的更多相关文章
- 数据结构和算法 – 7.散列和 Hashtable 类
7.1.散列函数 散列是一种常见的存储数据的技术,按照这种方式可以非常迅速地插入和取回数据.散列所采用的数据结构被称为是散列表.尽管散列表提供了快速地插入.删除.以及取回数据的操作,但是诸如查找最大值 ...
- C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、SortedList类)
1.ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在ArrayList中主要使用Add.Remove.RemoveAt.Insert四个方法对栈进行操作.Add方法 ...
- 转:C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、Sort)
C#常用的集合类型(ArrayList类.Stack类.Queue类.Hashtable类.Sort) .ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在Array ...
- Java:HashTable类小记
Java:HashTable类小记 对 Java 中的 HashTable类,做一个微不足道的小小小小记 概述 public class Hashtable<K,V> extends Di ...
- JDK源码阅读(5):HashTable类阅读笔记
HashTable public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, ...
- HashTable类模板_C++
好久没看数据结构了,今天终于要用到hash,整理一下写了个hash类模板 template<typename T> class DataType { public: T key; Data ...
- 【java源码】解读HashTable类背后的实现细节
HashTable这个类实现了哈希表从key映射到value的数据结构形式.任何非null的对象都可以作为key或者value. 要在hashtable中存储和检索对象,作为key的对象必须实现has ...
- System.Collections空间下的Hashtable类与System.Collections.Specialized下的StringDictionary的一点小区别
哎.有一周没有写自己的博客. 最近在做一个调用web服务的小程序,没有使用c#自动生成的代理类,而是使用http-get.post.以及soap的方式去请求的,使用这http请求这种方式需要自己去拼参 ...
- HashMap,LinkedHashMap和Hashtable类的深入剖析与理解
上一篇文章写了一些关于HashMap以及HashMap的线程安全问题,这篇文章再来说说Map系列中HashMap,LinkedHashMap和Hashtable三者之间的差异以及该注意的地方. Has ...
随机推荐
- jQuery EasyUI API 中文文档 - 表单(form补充)
继承(表单验证) 第一个参数如果是true那么就算key相同也会接着追加,相反怎会覆盖 $.extend([bool],obj,obj1); var obj = {name:"zhangsa ...
- android项目解刨之时间轴
近期开发的app中要用到时间轴这东西.须要实现的效果例如以下: 想想这个东西应该能够用listview实现吧. 然后近期就模拟着去写了: 首先写 listview的item的布局: listview ...
- 【Spring实战】—— 6 内部Bean
本篇文章讲解了Spring的通过内部Bean设置Bean的属性. 类似内部类,内部Bean与普通的Bean关联不同的是: 1 普通的Bean,在其他的Bean实例引用时,都引用同一个实例. 2 内部B ...
- windows开了远程控制访问老提示密码账号不正确
今天搞windows忽然遇到一件诡异的事情 今天想开一个远程控制,点吧点吧该做的事情做了,服务也开了,防火墙都直接关了,然后用另一台电脑访问,总是提示凭证(密码账户)不对,这账号信息我输的是百分之一百 ...
- JavaMelody、prob系统监控工具使用配置
分类: 工具 2014-04-23 14:41 1857人阅读 评论(1) 收藏 举报 目录(?)[+] 项 目开发结束了,需要做一下压力测试,就使用apache自带的ab程序进行压力测试,300个并 ...
- 自实现部分string类的功能
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class MyString { publi ...
- C语言初级链表(之有头节点的单向链表)
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> typedef struct No ...
- C++ opencv高速样例学习——读图显示
1.关键函数 1. 读入图片 imread(图片或位置,显示格式)默觉得:IMREAD_COLOR 显示格式: IMREAD_UNCHANGED =-1 // 8bit, color or no ...
- R内存扩展 win7内存扩展
安装包 imdiskinst 文件 램디스크 사용http://www.ltr-data.se/ http://cruciancar.blog.me/150101634586 --TEMP 변수 TE ...
- Spring Boot(四):利用devtools实现热部署,改动代码自动生效
一.前言 spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后 ...