Hashtable简述
- Hashtable简述 推荐度:
- 相关推荐
Hashtable简述
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
- Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。
- Hashtable 的函数都是同步的,这意味着它是线程安全的(synchronized)。它的key、value都不可以为null。此外,Hashtable中的映射不是有序的。
HashTable在Java中的定义如下:
从中可以看出HashTable继承Dictionary类,实现Map接口。其中Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。Map是"key-value键值对"接口。
Hashtable成员变量
- table:一个Entry[]数组类型,而Entry(在 HashMap 中有讲解过)就是一个单向链表。哈希表的”key-value键值对”都是存储在Entry数组中的
- count:Hashtable的大小,它是Hashtable保存的键值对的数量
- threshold:Hashtable的阈值,用于判断是否需要调整Hashtable的容量,threshold的值 = (容量 * 负载因子)
- loadFactor:负载因子
- modCount:用来实现fail-fast机制的(也就是快速失败)。所谓快速失败就是在并发集合中,其进行迭代操作时,若有其他线程对其进行结构性的修改,这时迭代器会立马感知到,并且立即抛出ConcurrentModificationException异常,而不是等到迭代完成之后才告诉你已经出错了。
Hashtable构造方法
在Hashtabel中存在4个构造函数。
// 默认构造函数。
public Hashtable() // 指定“容量大小”的构造函数
public Hashtable(int initialCapacity) // 指定“容量大小”和“加载因子”的构造函数
public Hashtable(int initialCapacity, float loadFactor) // 包含“子Map”的构造函数
public Hashtable(Map<? extends K, ? extends V> t)
public Hashtable() {this(11, 0.75f);}
// 默认构造函数,容量为11,加载因子为0.75。
HashMap和HashTable的不同
1、线程的安全性不同
HashMap线程不安全,但是他的效率比HashTable高,大部分都是单线程操作
HashTable线程安全
2、继承的父类不同
HashMap是继承AbstractMap类 都实现了 map,cloneable serializable 接口
HashTable是继承Dictionary类 都实现了 map,cloneable serializable 接口
3、初始容量大小和每次扩容大小不同
HashTable默认的初始大小为11 每次扩充为2n+1
HashMao默认的初始化大小是16 每次扩充为2倍
4、key和value是否允许为null值
HashTable中,key和value都不能为null
HashMap中,可以允许key和value为空的且存储在数组索引为0处
5、遍历方式不同
Hashtable比HashMap多一个elements方法。
- matlab回归分析sst
- Tensorflow框架初识
- c语言中 #include < > 和include “ “的区别
- 哀悼日
- Revit二次开发入门相关安装和配置
- netcore 开源cms
- mmap是什么,为什么?
- Java集合(十一)TreeSet解读
- 前途迷茫不知.NET与JAVA那个好
- C++,VC资源
- 二叉树的五种遍历方式
- CLion 插件
- Matlab中interp2和interpn的差异
- MFC 的CList,CPtrList,CObList,CStringList 的用法之CList
- pip升级报错:def read(rel
- AnacondaConda创建环境时报错的解决方案
- PHP使用header实现文件下载功能