GC程序语言中哈希表的实现方法及装置与流程

文档序号:22323793发布日期:2020-09-23 02:12阅读:来源:国知局

技术特征:

1.一种gc程序语言中哈希表的实现方法,其特征在于,包括:

若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组,并将所述新对象块数组插入到所述矩阵的最后一行的下方;

获取所述新对象块数组位于所述矩阵中的行号,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组,并将所述新对象块数组的起始位置的元素初始化为待插入对象;

若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置,则将所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。

2.根据权利要求1所述的gc程序语言中哈希表的实现方法,其特征在于,若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组的步骤之前还包括:

计算所述待插入对象的key值的哈希值,根据所述哈希值定位所述待插入对象在哈希表的哈希桶中的位置;

遍历访问所述哈希表的链表的所述位置,若所述位置不存在所述待插入对象,则判断所述哈希表的矩阵中的最后一个对象是否位于所述对象块数组的最后位置。

3.根据权利要求1所述的gc程序语言中哈希表的实现方法,其特征在于,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组的步骤还包括:

若所述索引数组的长度小于或等于所述新对象块数组位于所述矩阵中的行号,则创建一个新的索引数组;其中,所述新的索引数组的长度大于原来的索引数组的长度;

将原来的索引数组的内容复制到所述新的索引数组中,并将所述新的索引数组中与所述行号相同的下标位置指向所述新对象块数组。

4.根据权利要求1-3任一所述的gc程序语言中哈希表的实现方法,其特征在于,还包括:

计算待删除对象的key值的哈希值,根据所述待删除对象的key值的哈希值定位所述待删除对象在哈希表的哈希桶中的位置;

遍历访问所述待删除对象在所述哈希表的链表的所述位置,若所述位置存在所述待删除对象,则将所述待删除对象和所述矩阵中的最后一个对象互换;

若所述待删除对象互换后的位置为所述对象块数组的起始位置,则销毁所述待删除对象互换后所在的对象块数组。

5.根据权利要求4所述的gc程序语言中哈希表的实现方法,其特征在于,销毁所述待删除对象互换后所在的对象块数组的步骤之后还包括:

若所述索引数组的长度减去所述待删除对象互换后位于所述矩阵的行号大于预设阈值,则创建一个新的索引数组;其中,所述新的索引数组的长度小于原来的索引数组的长度;

将原来的索引数组的内容复制到所述新的索引数组中,并将所述新的索引数组中与所述待删除对象互换后位于所述矩阵的行号相同的下标位置指向空。

6.根据权利要求4所述的gc程序语言中哈希表的实现方法,其特征在于,将所述待删除对象和所述矩阵中的最后一个对象互换的步骤之后还包括:

若所述待删除对象互换后的位置不为所述对象块数组的起始位置,则删除互换后的所述待删除对象。

7.根据权利要求1-3任一所述的gc程序语言中哈希表的实现方法,其特征在于,还包括:

计算待查找对象的key值的哈希值,根据所述待查找对象的key值的哈希值定位所述待查找对象在哈希表的哈希桶中的位置;

遍历访问所述待查找对象在所述哈希表的链表的所述位置,若所述位置存在所述待查找对象,则将所述待查找对象返回。

8.一种gc程序语言中哈希表的实现装置,其特征在于,包括:

创建模块,用于在哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置时,创建一个新对象块数组,并将所述新对象块数组插入到所述矩阵的最后一行的下方;

插入模块,用于获取所述新对象块数组位于所述矩阵中的行号,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组,并将所述新对象块数组的起始位置的元素初始化为待插入对象;

若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置,则将所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。

9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述gc程序语言中哈希表的实现方法的步骤。

10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述gc程序语言中哈希表的实现方法的步骤。


技术总结
本发明实施例提供一种GC程序语言中哈希表的实现方法及装置,方法包括:若哈希表的矩阵中最后一个对象位于矩阵中对象块数组的最后位置,则创建一个新对象块数组,并将新对象块数组插入到所述矩阵的最后一行的下方;获取新对象块数组位于矩阵中的行号,将哈希表的索引数组中与行号相同的下标位置指向新对象块数组,并将新对象块数组的起始位置的元素初始化为待插入对象;若哈希表的矩阵中的最后一个对象不位于对象块数组的最后位置,则将最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。本发明实施例降低了内存申请和释放的频率,降低了堆内存中对象的数量,使得哈希表的性能得到显著提升。

技术研发人员:向阳;金捷;苑超;李灼锋
受保护的技术使用者:北京云杉世纪网络科技有限公司
技术研发日:2020.05.21
技术公布日:2020.09.22
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1