Hashtable类
Hashtable类
Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。
添加数据使用put(key, value),取出数据使用get(key),这两个基本操作的时间开销为常数。
Hashtable通过initial capacity和load factor两个参数调整性能。通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
使用Hashtable的简单示例如下,将1,2,3放到Hashtable中,他们的key分别是”one”,”two”,”three”:
Hashtable numbers = new Hashtable();
numbers.put(“one”, new Integer(1));
numbers.put(“two”, new Integer(2));
numbers.put(“three”, new Integer(3));
要取出一个数,比如2,用相应的key:
Integer n = (Integer)numbers.get(“two”);
System.out.println(“two = ” + n);
由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals方 法。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相 同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如 果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希 表的操作。
如果相同的对象有不同的hashCode,对哈希表的操作会出现意想不到的结果(期待的get方法返回null),要避免这种问题,只需要牢记一条:要同时复写equals方法和hashCode方法,而不要只写其中一个。
Hashtable是同步的。
Hashtable类相关推荐
- java哈希_Java Hashtable 类
Java Hashtable 类 Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 . 然而,Java 2 重构的Hashtable实现了Map接口,因此, ...
- C#数组和集合专题4(Hashtable类)
四.Hashtable类 ①.Hashtable概述 通过Hashtable类将数据作为一组键值对来存储,这些键值对是根据编码来组织的,可以将键作为索引器来获得对应值的对象. Hashtable对象中 ...
- Lession11 集合和泛型(ArrayList方法、Arraylist类、ArrayList添加对象、ArrayList长度、HashTable类、Hashtable类练习-----)
目录 ArrayList方法: ArrayList添加对象: Arraylist类: ArrayList长度: HashTable类: Hashtable类练习: IComparable泛型接口排序: ...
- 零基础学Java_Map接口、HashMap 类、HashTable 类、TreeMap 类(整理总结)
文章目录 一.集合的框架体系 1. 常用集合接口概述 2. 常用 Collection 集合的实现子类 3. 常用的 Map 图的实现子类 二.Map 接口 1. Map 接口的特点 2. Map 图 ...
- HashTable类模板_C++
好久没看数据结构了,今天终于要用到hash,整理一下写了个hash类模板 template<typename T>class DataType { public: T key;DataTy ...
- 学用 ASP.Net 之 System.Collections.Hashtable 类与 DictionaryEntry 结构
DictionaryEntry 是包含 Key / Value 一对值的简单结构; Hashtable(哈希表)是一组 Key / Value 的集合, 准确地讲是一组 DictionaryEntry ...
- STL之hashtable源代码剖析
// Filename: stl_hashtable.h// 本实作的hashtable採用的是开链法, 其内存布局例如以下// 对于产生哈希冲突的结点, 我们採取在其位置维护一个链表才处理之 // ...
- HashMap和Hashtable及HashSet的区别
Hashtable类 Hashtable继承Map接口,实现一个key-value映射的哈希表.任何非空(non-null)的对象都可作为key或者value. 添加数据使用put(k ...
- 哈希表(HASHTABLE)
原文地址:http://www.cnblogs.com/abatei/archive/2009/06/23/1509790.html C#中实现了哈希表数据结构的集合类有: (1) System.Co ...
最新文章
- 链表问题16——单链表的选择排序(python版本)
- AA065VD数据线连接错位的现象及分析总结
- 如何删除springboot中的子项目
- poj 2696 A Mysterious Function
- datastage配置jdbc_DataStage 错误集(持续更新)
- MySQL入门 (三) : 运算式与函式
- python从入门到精通需要多久-Python从入门到精通
- DDMF PluginDoctor Mac - 插件分析器音频质量测试
- c语言遗传算法在求解tsp问题,C语言遗传算法在求解TSP问题设计.doc
- pe下bootice修复Linux引导,快启动pe工具之bootice引导修复工具使用教程
- c语言 从文件中读取车牌,输入一个车牌号写入文件,找出所有后四位是一个完全平方数的车牌号并输出
- 百度地图开放平台web api 获取某项目方圆一公里的poi信息
- 深信服安服实习生面试心得
- 软件测试字节跳动头条项目面试,字节跳动|今日头条面试经验分享
- 火狐浏览器打开书签 不要在新页面打开书签
- Java Vector API的使用测试
- android 统一推送平台,工信部实验室成立安卓统一推送联盟:推送服务将实现统一...
- 各个版本的python在windows上如何安装pywin32
- python幂函数无序分布_Python:从幂律分布中生成随机数
- 寄存器和存储器的区别?
热门文章
- web 平台搭建-LAMP-源码包(CentOS-6)
- 命令行参数tail c语言,osg学习笔记2, 命令行参数解析器ArgumentParser
- 如何通过三视图判断立方体个数_如何看股票市盈率?怎么通过市盈率判断股票?...
- python 判断中文标点符号_Python入门编程题库27--生成随机密码
- python下的橡皮线_python下载吴恩达deep learning编程习题
- java 变量作用域 c语言_java - 数据结构 c语言 作用域问题
- php reactphp wss_php无限级分类 - ▄︻┻┳000000000000000000000000000000000000 - OSCHINA - 中文开源技术交流社区...
- 7-11 分段计算居民水费 (C语言)
- 从小到大排列的数组中查找x,若x存在则删除,若不存在则添加,修改后的数组仍然有序
- MIC4680-5.0YM-TR详细资料