[發明專利]一種哈希表創建方法及系統、計算設備及存儲介質有效
| 申請號: | 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.szxzyx.cn/pat/books/201910169079.3/2.html,轉載請聲明來源鉆瓜專利網。





