一种哈希表创建方法及系统、计算设备及存储介质技术方案

技术编号:21361138 阅读:33 留言:0更新日期:2019-06-15 09:17
本申请提供一种哈希表创建方法及系统、计算设备及存储介质,该方法包括:基于设定的哈希算法对目标字符串分别进行初始哈希运算,得到各个字符串对应的初始哈希值;确定目标字符串的数量M及存在冲突的初始哈希值的数量N,根据M和N确定目标字符串的初始哈希值的冲突率;根据所述初始哈希值的冲突率确定哈希算法的运算参数;基于所述运算参数分别对目标字符串进行哈希运算,得到各目标字符串与运算参数对应的运算哈希值;根据所述初始哈希值与所述运算哈希值构建树表示,并基于所述树表示创建对应的哈希表。

A Hash Table Creation Method and System, Computing Equipment and Storage Media

This application provides a hash table creation method and system, computing device and storage medium. The method includes: performing initial hash operations on target strings based on a set hash algorithm to obtain the initial hash values corresponding to each string; determining the number of target strings M and the number of conflicting initial hash values N; and determining the initial hash of target strings based on M and N. The conflict rate of the hash value; the operation parameters of the hash algorithm are determined according to the conflict rate of the initial hash value; the operation hash values corresponding to the operation parameters are obtained by hashing the target strings based on the operation parameters respectively; the tree representation is constructed according to the initial hash value and the operation hash value, and the corresponding hash table is created based on the tree representation. \u3002

【技术实现步骤摘要】
一种哈希表创建方法及系统、计算设备及存储介质
本申请涉及计算机
,特别涉及一种哈希表创建方法及系统、计算设备及存储介质。
技术介绍
哈希表也叫散列表,是根据关键码值而进行直接访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。散列函数能使对一个数据序列的访问过程更加有效,通过散列函数,数据元素将被更快地定位。在JAVA语言中,用一种方法创建一个目标字符串"aaa"时,JVM首先会去字符串池中查找是否存在"aaa"这个对象,如果不存在,则在字符串池中创建"aaa"这个对象,然后将池中"aaa"这个对象的引用地址返回给字符串常str,这样str会指向池中"aaa"这个字符串对象;如果存在,则不创建任何对象,直接将池中"aaa"这个对象的地址返回,赋给字符串常量。字符串被用作其他对象的索引或对象本身,在引用过程中需要进行字符串比较,则采取将待比较字符串的所有组成字符逐一比较的方式来确定待比较的字符串是否相同,而字符串之间频繁的比较会对程序的性能有显著的负影响,通常的处理是将字符串哈希(Hash),比较哈希值来判断字符串是否相等以提高比较性能,但哈希的方法会出现2个哈希值相等的字符串实际并不相同的情况,解决冲突的办法一般是使用哈希表,但在字符串对象较多的情况下,重新构建哈希表扩展的次数与消耗性能不容忽视。
技术实现思路
有鉴于此,本说明书实施例提供了一种哈希表创建方法及系统、计算设备及存储介质,以解决现有技术中存在的技术缺陷。一方面,本说明书实施例公开了一种哈希表创建方法,包括:基于设定的哈希算法对目标字符串分别进行初始哈希运算,得到各目标字符串对应的初始哈希值;确定目标字符串的数量M及存在冲突的初始哈希值的数量N,根据M和N确定目标字符串的初始哈希值的冲突率y,其中M和N为正整数;根据所述初始哈希值的冲突率确定哈希算法的运算参数;基于所述运算参数分别对目标字符串进行哈希运算,得到各目标字符串与运算参数对应的运算哈希值;根据所述初始哈希值与所述运算哈希值构建树表示,并基于所述树表示创建对应的哈希表。另一方面,本说明书实施例公开了一种数据查询方法,包括:接收字符串地址查询请求,所述查询请求中携带有待查询的目标字符串;基于设定的哈希算法及运算参数对所述待查询的目标字符串进行哈希运算,得到待查询的目标字符串的初始哈希值及运算哈希值;获取创建完成的哈希表;根据待查询的目标字符串的初始哈希值及运算哈希值对哈希表进行检索,确定所述待查询的目标字符串的存储地址。另一方面,本说明书实施例公开了一种哈希表创建的装置,包括:第一哈希运算模块,被配置为基于设定的哈希算法对目标字符串分别进行初始哈希运算,得到各目标字符串对应的初始哈希值;第一处理模块,被配置为确定目标字符串的数量M及存在冲突的初始哈希值的数量N,根据目标字符串的数量M和存在冲突的初始哈希值的数量N确定目标字符串的初始哈希值的冲突率;第二处理模块,被配置为根据所述初始哈希值的冲突率确定哈希算法的运算参数;第二哈希运算模块,被配置为基于所述运算参数分别对目标字符串进行哈希运算,得到各目标字符串与运算参数对应的运算哈希值;第三处理模块,被配置为根据所述初始哈希值与所述运算哈希值构建树表示,并基于所述树表示创建对应的哈希表。另一方面,本说明书实施例公开了一种数据查询装置,包括:接收模块,被配置为接收字符串地址查询请求,所述查询请求中携带有待查询的目标字符串;第三哈希运算模块,被配置为基于设定的哈希算法及运算参数对待查询的目标字符串进行哈希运算,得到待查询的目标字符串的初始哈希值及运算哈希值;获取模块,被配置为获取创建完成的哈希表;确定模块,被配置为根据待查询的目标字符串的初始哈希值及运算哈希值对哈希表进行检索,确定所述待查询的目标字符串的存储地址。另一方面,本说明书实施例公开了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现该指令被处理器执行时实现哈希表创建的方法或者数据查询方法的步骤。另一方面,本说明书实施例公开了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行哈希表创建的方法或者数据查询方法的步骤。本说明书提供的一种哈希表扩建方法及装置,通过利用运算参数对目标字符串进行哈希运算,有利于减少目标字符串的哈希值冲突率,根据所述初始哈希值与所述运算哈希值构建树表示,并基于所述树表示创建对应的哈希表。通过利用树表示可以缩短字符串的查找时间,进而提高字符串存储过程的工作效率。利用所述树表示创建哈希表可以一次性完成,不需要每次新增/删除数据,反复重置哈希表,减小了昂贵的开销。附图说明图1是本说明书一实施例提供的一种计算设备的结构框图;图2是本说明书一实施例提供的一种哈希表创建方法流程图;图3是本说明书一实施例提供的一种哈希表创建方法流程图;图4是本说明书一实施例提供的一种哈希表创建方法流程图;图5是本说明书一实施例提供的一种红黑树示意图;图6是本说明书一实施例提供的一种哈希表创建方法流程图;图7是本说明书一实施例提供的一种哈希表示意图;图8是本说明书一实施例提供的一种数据查询方法流程图;图9是本说明书一实施例提供的一种哈希表示意图;图10是本说明书一实施例提供的一种哈希表创建装置的结构示意图;图11是本说明书一实施例提供的一种哈希表创建装置的结构示意图。具体实施方式在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在本说明书中,提供了一种哈希表创建方法、装置、一种计算设备及存储介质,在下面的实施例中逐一进行详细说明。图1是示出了根据本说明书一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接。计算设备100还包括接入设备140,接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂本文档来自技高网...

【技术保护点】
1.一种哈希表创建方法,其特征在于,包括:基于设定的哈希算法对目标字符串分别进行初始哈希运算,得到各目标字符串对应的初始哈希值;确定目标字符串的数量M及存在冲突的初始哈希值的数量N,根据M和N确定目标字符串的初始哈希值的冲突率y,其中M和N为正整数;根据所述初始哈希值的冲突率确定哈希算法的运算参数;基于所述运算参数分别对目标字符串进行哈希运算,得到各目标字符串与运算参数对应的运算哈希值;根据所述初始哈希值与所述运算哈希值构建树表示,并基于所述树表示创建对应的哈希表。

【技术特征摘要】
1.一种哈希表创建方法,其特征在于,包括:基于设定的哈希算法对目标字符串分别进行初始哈希运算,得到各目标字符串对应的初始哈希值;确定目标字符串的数量M及存在冲突的初始哈希值的数量N,根据M和N确定目标字符串的初始哈希值的冲突率y,其中M和N为正整数;根据所述初始哈希值的冲突率确定哈希算法的运算参数;基于所述运算参数分别对目标字符串进行哈希运算,得到各目标字符串与运算参数对应的运算哈希值;根据所述初始哈希值与所述运算哈希值构建树表示,并基于所述树表示创建对应的哈希表。2.如权利要求1所述的方法,其特征在于,所述根据所述初始哈希值的冲突率确定哈希算法的运算参数包括:设置哈希值冲突率的容忍度阈值p;根据所述容忍度阈值p和目标字符串的初始哈希值的冲突率y确定运算参数的个数n,n为正整数;选取n个不相等的正整数作为哈希算法的运算参数。3.如权利要求1所述的方法,其特征在于,基于所述运算参数分别对目标字符串进行哈希运算,得到各目标字符串与运算参数对应的运算哈希值包括:基于每个运算参数对目标字符串进行哈希运算,得到目标字符串与所述运算参数对应的运算哈希值。4.如权利要求1所述的方法,其特征在于,根据所述初始哈希值与所述运算哈希值构建树表示包括:根据目标字符串的初始哈希值为索引在第i个树表示中查找与所述索引对应的节点,i∈[1,n+1],n表示运算参数的总数,i和n均为正整数;若在第i个树表示中未查找到对应的节点,则以所述初始哈希值和运算哈希值为关键字创建节点,并将所述字符串的首地址添加到所创建节点的节点值中;若在第i个树表示中查找到对应的节点,则i的值增加1,判断i与n+1的大小关系;若i小于等于n+1,则继续执行根据目标字符串的初始哈希值为索引在第i个树表示中查找与所述索引对应的节点步骤;若i大于n+1,则树表示的构建过程结束。5.如权利要求1所述的方法,其特征在于,所述基于所述树表示创建对应的哈希表包括:完成一次树表示的遍历;根据遍历得到的所述树表示中各节点的信息创建与所述树表示对应的哈希表。6.如权利要求5所述的方法,其特征在于,所述根据遍历得到的所述树表示中各节点的信息创建与所述树表示对应的哈希表包括:根据所述目标字符串的初始哈希值确定哈希表项索引;根据所述哈希表项索引从所述第i个哈希表中查询对应的哈希表项h,作为当前哈希表项,i∈[1,n+1],h∈[1,L],L表示哈希表的长度,n为运算参数的总数,i、L和h均为正整数;判断所述哈希表项h的内容是否为空;当所述哈希表项h内容为空时,将所述第i个树表示节点中目标字符串的初始哈希值、运算哈希值和字符串首地址添加到当前哈希表项的表项中;当所述哈希表项h内容不为空时,则从所述第i个哈希表中查询对应的哈希表项h=h+1,作为当前哈希表项,继续执行判断所述哈希表项h的内容是否为空的步骤。7.如权利要求1至6中任意一项所述的方法,其特征在于,所述树表示包括红黑树。8.如权利要求1所述的方法,其特征在于,还包括:接收字符串地址查询请求,所述查询请求中携带有待查询的目标字符串;基于设定的哈希算法及运算参数对所述待查询的目标字符串进行哈希运算,得到待查询的目标字符串的初始哈希值及运算哈希值;获取所述创建完成的哈希表;根据待查询的目标字符串的初始哈希值及运算哈希值对哈希表进行检索,确定所述待查询的目标字符串的存储地址。9.如权利要求8所述的方法,其特征在于,所述根据待查询的目标字符串的初始哈希值及运算哈希值对哈希表进行检索,确定所述待查询的目标字符串的存储地址包括:根据待查询的目标字符串的初始哈希值确定哈希表项索引;根据所述哈...

【专利技术属性】
技术研发人员:李哈迪杨林
申请(专利权)人:珠海金山网络游戏科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1