【技术实现步骤摘要】
一种建立哈希映射的方法、装置、存储介质
本专利技术涉及数据存储领域,具体涉及一种建立哈希映射的方法、装置、存储介质。
技术介绍
在程序设计过程中经常会把同类型的不同对象的数据放在连续的存储空间中,每个对象占用相同长度的空间,因此就可以用对象的偏移量非常高效的读取或编辑数据,这就是编程语言数组的实现方式。比如,一个应用系统有许多用户,每个用户有账号、姓名、密码等信息,把所有用户信息对象构建成一个数组,第k个用户,就直接用数组下标k快速的访问到该用户数据。可是我们很多时候不仅需要用下标去访问用户数据,也需要通过账号,姓名或其他信息快速访问到用户数据。这时候常用的做法就是将每类信息用hash表、查找树或者跳跃表等数据结构做一个映射关系。要通过账号访问用户数据,就提前把账号当key,下标当value,创建所有key,value键值对的映射表。通过姓名或者其他信息访问用户数据,同样分别创建各类数据维度的映射表。但是,在建立映射表时,无论用hash表、查找树还是其它方式实现,key都被冗余存储了,浪费了比较大的存储空间。因此,建立一种更加简洁的占用存储空间较少的映射关系是非常 ...
【技术保护点】
1.一种建立哈希映射表的方法,其特征在于,包括:S1:在数据库中构建第一向量用以顺序存储元素;S2:构建哈希表,所述哈希表包括n个(n=1,2,…,i,…,n)哈希桶,第i个哈希桶包括2
【技术特征摘要】
1.一种建立哈希映射表的方法,其特征在于,包括:S1:在数据库中构建第一向量用以顺序存储元素;S2:构建哈希表,所述哈希表包括n个(n=1,2,…,i,…,n)哈希桶,第i个哈希桶包括2i+2个链表单元以及free指针,链表单元包括链表数据和下一个链表单元的地址,free指针用以存储后续链表的存储位置;S3:通过哈希算法计算所述第一向量中的元素的哈希值,通过所述哈希值对2i+2取余得到表示所述哈希桶的位置的位置数据,并将相对应的所述第一向量中的元素所在的位置作为链表数据存储到所述位置数据表示的哈希桶的位置中,由此建立用于所述第一向量的哈希映射表。2.根据权利要求1所述的建立哈希映射表的方法,其特征在于,所述后续链表初始化时包括2i+2个链表单元,产生哈希冲突时从所述后续链表中取一个链表单元用以存储链表数据。3.根据权利要求1所述的建立哈希映射表的方法,其特征在于,在数据库中构建第二向量,所述第二向量用以顺序存储所述第一向量中被删除元素所在的位置。4.根据权利要求1所述的建立哈希映射表的方法,其特征在于,所述哈希算法包括MD4、MD5和SHA-1中的一种。5.一种利用权利要求1-4中任一所述的方法建立的哈希映射表进行查询元素的方法,其特征在于,包括以下步骤:P1:通过待查询元素的查找值计算哈希值,遍历哈希表中所有哈希桶;P2:在大小为2i+2的哈希桶中,哈希值对2i+2取余为m,得到哈希桶中第m个位置的链表数据;P3:判断链表数据是否为空,若链表数据不为空,获取所述第一向量中位置为链表数据的元素,取其字段值,判断所述字段值与查找值是否一致,一致则查找结束返回元素,不一致继续遍历哈希桶,直到哈希桶为空;P4:对所有哈希桶重复步骤P2-P3,直到找到元素或全部遍历完成所有哈希桶。6.一种利用权利要求1-4中任一所述的方法建立的哈希映射表进行增加元素的方法,其特征在于,包括以下步骤:M1:通过待增加元素查找哈希表中的链表数据,判断所述链表数据是否为空,若所述链表数据不为空,则结束增加,若所述链表数据为空,继续下一步骤;M2:判断所述第二向量是否为空,若所述第二向量为空,元...
【专利技术属性】
技术研发人员:朱智佳,李山,林世国,常鹏,张永光,吴鸿伟,
申请(专利权)人:厦门市美亚柏科信息股份有限公司,
类型:发明
国别省市:福建,35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。