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个哈希值相等的字符串实际并不相同的情况,解决冲突的办法一般是使用哈希表,但在字符串对象较多的情况下,重新构建哈希表扩展的次数与消耗性能不容忽视。
技术实现思路
有鉴于此,本说明书实施例提供了一种哈希表创建方法及系统、计算设备及存储介质,以解决现有技术中存在的技术缺陷。一方面,本说明书实施例公开了一种哈希表创建方法, ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。