[发明专利]GC程序语言中哈希表的实现方法及装置有效
申请号: | 202010436194.5 | 申请日: | 2020-05-21 |
公开(公告)号: | CN111694559B | 公开(公告)日: | 2023-07-21 |
发明(设计)人: | 向阳;金捷;苑超;李灼锋 | 申请(专利权)人: | 北京云杉世纪网络科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F16/22;G06F9/50;G06F12/02 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李文清 |
地址: | 100083 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | gc 程序语言 中哈希表 实现 方法 装置 | ||
1.一种GC程序语言中哈希表的实现方法,其特征在于,包括:
若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组,并将所述新对象块数组插入到所述矩阵的最后一行的下方;
获取所述新对象块数组位于所述矩阵中的行号,将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组,并将所述新对象块数组的起始位置的元素初始化为待插入对象;
若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置,则将所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象;
将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象块数组的步骤还包括:
若所述索引数组的长度小于或等于所述新对象块数组位于所述矩阵中的行号,则创建一个新的索引数组;其中,所述新的索引数组的长度大于原来的索引数组的长度;
将原来的索引数组的内容复制到所述新的索引数组中,并将所述新的索引数组中与所述行号相同的下标位置指向所述新对象块数组。
2.根据权利要求1所述的GC程序语言中哈希表的实现方法,其特征在于,若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置,则创建一个新对象块数组的步骤之前还包括:
计算所述待插入对象的Key值的哈希值,根据所述哈希值定位所述待插入对象在哈希表的哈希桶中的位置;
遍历访问所述哈希表的链表的所述位置,若所述位置不存在所述待插入对象,则判断所述哈希表的矩阵中的最后一个对象是否位于所述对象块数组的最后位置。
3.根据权利要求1或2所述的GC程序语言中哈希表的实现方法,其特征在于,还包括:
计算待删除对象的Key值的哈希值,根据所述待删除对象的Key值的哈希值定位所述待删除对象在哈希表的哈希桶中的位置;
遍历访问所述待删除对象在所述哈希表的链表的所述位置,若所述位置存在所述待删除对象,则将所述待删除对象和所述矩阵中的最后一个对象互换;
若所述待删除对象互换后的位置为所述对象块数组的起始位置,则销毁所述待删除对象互换后所在的对象块数组。
4.根据权利要求3所述的GC程序语言中哈希表的实现方法,其特征在于,销毁所述待删除对象互换后所在的对象块数组的步骤之后还包括:
若所述索引数组的长度减去所述待删除对象互换后位于所述矩阵的行号大于预设阈值,则创建一个新的索引数组;其中,所述新的索引数组的长度小于原来的索引数组的长度;
将原来的索引数组的内容复制到所述新的索引数组中,并将所述新的索引数组中与所述待删除对象互换后位于所述矩阵的行号相同的下标位置指向空。
5.根据权利要求3所述的GC程序语言中哈希表的实现方法,其特征在于,将所述待删除对象和所述矩阵中的最后一个对象互换的步骤之后还包括:
若所述待删除对象互换后的位置不为所述对象块数组的起始位置,则删除互换后的所述待删除对象。
6.根据权利要求1或2所述的GC程序语言中哈希表的实现方法,其特征在于,还包括:
计算待查找对象的Key值的哈希值,根据所述待查找对象的Key值的哈希值定位所述待查找对象在哈希表的哈希桶中的位置;
遍历访问所述待查找对象在所述哈希表的链表的所述位置,若所述位置存在所述待查找对象,则将所述待查找对象返回。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京云杉世纪网络科技有限公司,未经北京云杉世纪网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010436194.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种仿石砖及其涂装施工方法
- 下一篇:一种市政道路下水管道防堵系统