[发明专利]一种哈希表创建方法及系统、计算设备及存储介质有效
| 申请号: | 201910169079.3 | 申请日: | 2019-03-06 |
| 公开(公告)号: | CN109885576B | 公开(公告)日: | 2020-12-01 |
| 发明(设计)人: | 李哈迪;杨林 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司 |
| 主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/903 |
| 代理公司: | 北京智信禾专利代理有限公司 11637 | 代理人: | 吴肖肖 |
| 地址: | 广东省珠海市高新区唐家湾镇前岛环路325号102室、20*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 哈希表 创建 方法 系统 计算 设备 存储 介质 | ||
本申请提供一种哈希表创建方法及系统、计算设备及存储介质,该方法包括:基于设定的哈希算法对目标字符串分别进行初始哈希运算,得到各个字符串对应的初始哈希值;确定目标字符串的数量M及存在冲突的初始哈希值的数量N,根据M和N确定目标字符串的初始哈希值的冲突率;根据所述初始哈希值的冲突率确定哈希算法的运算参数;基于所述运算参数分别对目标字符串进行哈希运算,得到各目标字符串与运算参数对应的运算哈希值;根据所述初始哈希值与所述运算哈希值构建树表示,并基于所述树表示创建对应的哈希表。
技术领域
本申请涉及计算机技术领域,特别涉及一种哈希表创建方法及系统、计算设备及存储介质。
背景技术
哈希表也叫散列表,是根据关键码值而进行直接访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。散列函数能使对一个数据序列的访问过程更加有效,通过散列函数,数据元素将被更快地定位。
在JAVA语言中,用一种方法创建一个目标字符串aaa时,JVM首先会去字符串池中查找是否存在aaa这个对象,如果不存在,则在字符串池中创建aaa这个对象,然后将池中aaa这个对象的引用地址返回给字符串常量str,这样str会指向池中aaa这个字符串对象;如果存在,则不创建任何对象,直接将池中aaa这个对象的地址返回,赋给字符串常量。
字符串被用作其他对象的索引或对象本身,在引用过程中需要进行字符串比较,则采取将待比较字符串的所有组成字符逐一比较的方式来确定待比较的字符串是否相同,而字符串之间频繁的比较会对程序的性能有显著的负影响,通常的处理是将字符串哈希(Hash),比较哈希值来判断字符串是否相等以提高比较性能,但哈希的方法会出现2个哈希值相等的字符串实际并不相同的情况,解决冲突的办法一般是使用哈希表,但在字符串对象较多的情况下,重新构建哈希表扩展的次数与消耗性能不容忽视。
发明内容
有鉴于此,本说明书实施例提供了一种哈希表创建方法及系统、计算设备及存储介质,以解决现有技术中存在的技术缺陷。
一方面,本说明书实施例公开了一种哈希表创建方法,包括:
基于设定的哈希算法对目标字符串分别进行初始哈希运算,得到各个字符串对应的初始哈希值;
确定目标字符串的数量M及存在冲突的初始哈希值的数量N,根据M和N确定目标字符串的初始哈希值的冲突率y,其中M和N为正整数;
根据所述初始哈希值的冲突率确定哈希算法的运算参数;
基于所述运算参数分别对目标字符串进行哈希运算,得到目标字符串与运算参数对应的运算哈希值;
根据所述初始哈希值与所述运算哈希值构建树表示,并基于所述树表示创建对应的哈希表。
另一方面,本说明书实施例公开了一种数据查询方法,包括:
接收字符串地址查询请求,所述查询请求中携带有待查询的目标字符串;
基于设定的哈希算法及运算参数对所述待查询的目标字符串进行哈希运算,得到待查询的目标字符串的初始哈希值及运算哈希值;
获取所述创建完成的哈希表;
根据待查询的目标字符串的初始哈希值及运算哈希值对哈希表进行检索,确定所述待查询的目标字符串的存储地址。
另一方面,本说明书实施例公开了一种哈希表创建的装置,包括:
第一哈希运算模块,被配置为基于设定的哈希算法对目标字符串分别进行初始哈希运算,得到各个字符串对应的初始哈希值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司,未经珠海金山网络游戏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910169079.3/2.html,转载请声明来源钻瓜专利网。





