码迷,mamicode.com
首页 > 其他好文 > 详细

hash table

时间:2019-10-24 23:21:27      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:ash   ble   数据   最大   log   之间   number   构建   pen   

Hash Table,叫做哈希表,也叫做散列表。
概念:通过某种对应关系h,使得每一个元素和储存位置一一对应。这种对应关系称为哈希函数。它最大的优点就是插入、搜索和删除得很快(O(1))。
碰撞(Collision):不同的关键字对应同一个哈希地址
解决碰撞的方法之一:chaining

 

拉链法(open hashing)H-Chaining



技术图片

 

技术图片

 

 

 比如expected number of comparisons==2

那chain长度为3

单双向链表不确定,看情况。

另外头指针用数组存。

开地址法(closed hashing或者opened addressing)线性探测 H-OPEN

即当一个关键字和另一个关键字发生冲突时,使用某种探测技术在Hash表中形成一个探测序列,然后沿着这个探测序列依次查找下去,当碰到一个空的单元时,则插入其中。比较常用的探测方法有线性探测法,比如有一组关键字{12,13,25,23,38,34,6,84,91},Hash表长为14,Hash函数为address(key)=key%11,当插入12,13,25时可以直接插入,而当插入23时,地址1被占用了,因此沿着地址1依次往下探测(探测步长可以根据情况而定),直到探测到地址4,发现为空,则将23插入其中。

https://blog.csdn.net/yue_hu/article/details/80661438  补充

HashMap 加载因子 loadFactor

一、何为加载因子?

加载因子是表示Hsah表中元素的填满的程度.若:加载因子越大,填满的元素越多,好处是,空间利用率高了,但:冲突的机会加大了.反之,加载因子越小,填满的元素越少,好处是:冲突的机会减小了,但:空间浪费多了.


冲突的机会越大,则查找的成本越高.反之,查找的成本越小.因而,查找时间就越小. 

因此,必须在 "冲突的机会"与"空间利用率"之间寻找一种平衡与折衷. 这种平衡与折衷本质上是数据结构中有名的"时-空"矛盾的平衡与折衷.

 

二、HashMap中的加载因子

HashMap默认的加载因子是0.75,最大容量是16,因此可以得出HashMap的默认容量是:0.75*16=12。

用户可以自定义最大容量和加载因子。

 

HashMap 包含如下几个构造器:

  • HashMap():构建一个初始容量为 16,负载因子为 0.75 的 HashMap。

  • HashMap(int initialCapacity):构建一个初始容量为 initialCapacity,负载因子为 0.75 的 HashMap。

  • HashMap(int initialCapacity, float loadFactor):以指定初始容量、指定的负载因子创建一个 HashMap。

 

hash table

标签:ash   ble   数据   最大   log   之间   number   构建   pen   

原文地址:https://www.cnblogs.com/lqerio/p/11735638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!