GC程序语言中哈哈希游戏平台希表的实现方法及装置pdf
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏
《GC程序语言中哈希表的实现方法及装置.pdf》由会员分享,可在线阅读,更多相关《GC程序语言中哈希表的实现方法及装置.pdf(13页完成版)》请在专利查询网上搜索。
2、(54)发明名称 GC程序语言中哈希表的实现方法及装置 (57)摘要 本发明实施例提供一种GC程序语言中哈希 表的实现方法及装置, 方法包括: 若哈希表的矩 阵中最后一个对象位于矩阵中对象块数组的最 后位置, 则创建一个新对象块数组, 并将新对象 块数组插入到所述矩阵的最后一行的下方; 获取 新对象块数组位于矩阵中的行号, 将哈希表的索 引数组中与行号相同的下标位置指向新对象块 数组, 并将新对象块数组的起始位置的元素初始 化为待插入对象; 若哈希表的矩阵中的最后一个 对象不位于对象块数组的最后位置, 则将最后一 个对象所在位置的后一个位置的元素初始化为 所述待插入对象。 本发明实施例降低了内。
3、存申请 和释放的频率, 降低了堆内存中对象的数量, 使 得哈希表的性能得到显著提升。 权利要求书2页 说明书8页 附图2页 CN 111694559 A 2020.09.22 CN 111694559 A 1.一种GC程序语言中哈希表的实现方法, 其特征在于, 包括: 若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位置, 则创建一个 新对象块数组, 并将所述新对象块数组插入到所述矩阵的最后一行的下方; 获取所述新对象块数组位于所述矩阵中的行号, 将所述哈希表的索引数组中与所述行 号相同的下标位置指向所述新对象块数组, 并将所述新对象块数组的起始位置的元素初始 化为待插入对象; 若所。
4、述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置, 则将所述 最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。 2.根据权利要求1所述的GC程序语言中哈希表的实现方法, 其特征在于, 若哈希表的矩 阵中最后一个对象位于所述矩阵中对象块数组的最后位置, 则创建一个新对象块数组的步 骤之前还包括: 计算所述待插入对象的Key值的哈希值, 根据所述哈希值定位所述待插入对象在哈希 表的哈希桶中的位置; 遍历访问所述哈希表的链表的所述位置, 若所述位置不存在所述待插入对象, 则判断 所述哈希表的矩阵中的最后一个对象是否位于所述对象块数组的最后位置。 3.根据权利要求1所述的GC。
5、程序语言中哈希表的实现方法, 其特征在于, 将所述哈希表 的索引数组中与所述行号相同的下标位置指向所述新对象块数组的步骤还包括: 若所述索引数组的长度小于或等于所述新对象块数组位于所述矩阵中的行号, 则创建 一个新的索引数组; 其中, 所述新的索引数组的长度大于原来的索引数组的长度; 将原来的索引数组的内容复制到所述新的索引数组中, 并将所述新的索引数组中与所 述行号相同的下标位置指向所述新对象块数组。 4.根据权利要求1-3任一所述的GC程序语言中哈希表的实现方法, 其特征在于, 还包 括: 计算待删除对象的Key值的哈希值, 根据所述待删除对象的Key值的哈希值定位所述待 删除对象在哈希表。
6、的哈希桶中的位置; 遍历访问所述待删除对象在所述哈希表的链表的所述位置, 若所述位置存在所述待删 除对象, 则将所述待删除对象和所述矩阵中的最后一个对象互换; 若所述待删除对象互换后的位置为所述对象块数组的起始位置, 则销毁所述待删除对 象互换后所在的对象块数组。 5.根据权利要求4所述的GC程序语言中哈希表的实现方法, 其特征在于, 销毁所述待删 除对象互换后所在的对象块数组的步骤之后还包括: 若所述索引数组的长度减去所述待删除对象互换后位于所述矩阵的行号大于预设阈 值, 则创建一个新的索引数组; 其中, 所述新的索引数组的长度小于原来的索引数组的长 度; 将原来的索引数组的内容复制到所述新。
7、的索引数组中, 并将所述新的索引数组中与所 述待删除对象互换后位于所述矩阵的行号相同的下标位置指向空。 6.根据权利要求4所述的GC程序语言中哈希表的实现方法, 其特征在于, 将所述待删除 对象和所述矩阵中的最后一个对象互换的步骤之后还包括: 若所述待删除对象互换后的位置不为所述对象块数组的起始位置, 则删除互换后的所 权利要求书 1/2 页 2 CN 111694559 A 2 述待删除对象。 7.根据权利要求1-3任一所述的GC程序语言中哈希表的实现方法, 其特征在于, 还包 括: 计算待查找对象的Key值的哈希值, 根据所述待查找对象的Key值的哈希值定位所述待 查找对象在哈希表的哈希桶。
8、中的位置; 遍历访问所述待查找对象在所述哈希表的链表的所述位置, 若所述位置存在所述待查 找对象, 则将所述待查找对象返回。 8.一种GC程序语言中哈希表的实现装置, 其特征在于, 包括: 创建模块, 用于在哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位 置时, 创建一个新对象块数组, 并将所述新对象块数组插入到所述矩阵的最后一行的下方; 插入模块, 用于获取所述新对象块数组位于所述矩阵中的行号, 将所述哈希表的索引 数组中与所述行号相同的下标位置指向所述新对象块数组, 并将所述新对象块数组的起始 位置的元素初始化为待插入对象; 若所述哈希表的矩阵中的最后一个对象不位于所述对象块数。
9、组的最后位置, 则将所述 最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。 9.一种电子设备, 包括存储器、 处理器及存储在存储器上并可在处理器上运行的计算 机程序, 其特征在于, 所述处理器执行所述程序时实现如权利要求1至7任一项所述GC程序 语言中哈希表的实现方法的步骤。 10.一种非暂态计算机可读存储介质, 其上存储有计算机程序, 其特征在于, 该计算机 程序被处理器执行时实现如权利要求1至7任一项所述GC程序语言中哈希表的实现方法的 步骤。 权利要求书 2/2 页 3 CN 111694559 A 3 GC程序语言中哈希表的实现方法及装置 技术领域 0001 本发明属于计。
10、算机数据结构技术领域, 尤其涉及一种GC程序语言中哈希表的实现 方法及装置。 背景技术 0002 在GC(Garbage Collection, 垃圾回收)程序语言中, 对象的高频构造和销毁会由 于周期性的垃圾回收引发巨大的程序执行开销。 例如在Golang语言中, 高频构造和销毁的 对象会在堆空间上占据大量的零散内存空间, 并在每隔2分钟的垃圾回收发生时导致整个 程序长时间锁定无法执行堆内存访问指令。 0003 哈希表是程序设计语言中重要的数据结构, 如Golang的map和Java的HashMap等, 用于实现对象的快速查找。 在GC程序语言中, 哈希表中对象的高频插入和删除会导致大量 堆。
11、空间上的对象被频繁创建和销毁, 周期性执行的GC操作锁定整个堆空间时也会由于对象 数量庞大而长时间锁定, 进而导致哈希表此时的查询性能显著降低。 0004 由于哈希表是一个非常经典的数据结构, 因此其实现方式在各种语言中大同小 异。 简单来讲, 通过一个数组H存储哈希值对应的链表表头, 该数组称之为哈希桶。 插入、 删 除、 查询操作会先通过对对象的Key进行哈希计算, 定位到在H数组中的下标, 并扫描该下标 位置指向的链表判断是否存在该对象及是否需要增删该对象。 0005 以Golang为例, 它使用传统的哈希表实现方法, 在向哈希表插入对象时, 会在堆空 间上生成一个对象; 删除一个对象时。
12、会从堆空间中标记该对象已不再被哈希表使用。 由于 堆空间中的GC会定期检查堆空间所有对象, 若没有被任何代码使用则将其最终释放。 0006 在高频插入和删除操作时, 对象的申请和释放使得GC会面对一个由大量零碎对象 构成的堆空间, 对哈希表的频繁操作会显著影响哈希表的整体性能。 发明内容 0007 为克服上述现有的哈希表实现方法对哈希表频繁操作影响哈希表性能的问题或 者至少部分地解决上述问题, 本发明实施例提供一种GC程序语言中哈希表的实现方法及装 置。 0008 根据本发明实施例的第一方面, 提供一种GC程序语言中哈希表的实现方法, 包括: 0009 若哈希表的矩阵中最后一个对象位于所述矩阵。
13、中对象块数组的最后位置, 则创建 一个新对象块数组, 并将所述新对象块数组插入到所述矩阵的最后一行的下方; 0010 获取所述新对象块数组位于所述矩阵中的行号, 将所述哈希表的索引数组中与所 述行号相同的下标位置指向所述新对象块数组, 并将所述新对象块数组的起始位置的元素 初始化为待插入对象; 0011 若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置, 则将 所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。 0012 具体地, 若哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最后位 说明书 1/8 页 4 CN 111694559 A 4 置, 则创建。
14、一个新对象块数组的步骤之前还包括: 0013 计算所述待插入对象的Key值的哈希值, 根据所述哈希值定位所述待插入对象在 哈希表的哈希桶中的位置; 0014 遍历访问所述哈希表的链表的所述位置, 若所述位置不存在所述待插入对象, 则 判断所述哈希表的矩阵中的最后一个对象是否位于所述对象块数组的最后位置。 0015 具体地, 将所述哈希表的索引数组中与所述行号相同的下标位置指向所述新对象 块数组的步骤还包括: 0016 若所述索引数组的长度小于或等于所述新对象块数组位于所述矩阵中的行号, 则 创建一个新的索引数组; 其中, 所述新的索引数组的长度大于原来的索引数组的长度; 0017 将原来的索引。
15、数组的内容复制到所述新的索引数组中, 并将所述新的索引数组中 与所述行号相同的下标位置指向所述新对象块数组。 0018 具体地, 还包括: 0019 计算待删除对象的Key值的哈希值, 根据所述待删除对象的Key值的哈希值定位所 述待删除对象在哈希表的哈希桶中的位置; 0020 遍历访问所述待删除对象在所述哈希表的链表的所述位置, 若所述位置存在所述 待删除对象, 则将所述待删除对象和所述矩阵中的最后一个对象互换; 0021 若所述待删除对象互换后的位置为所述对象块数组的起始位置, 则销毁所述待删 除对象互换后所在的对象块数组。 0022 具体地, 销毁所述待删除对象互换后所在的对象块数组的步。
16、骤之后还包括: 0023 若所述索引数组的长度减去所述待删除对象互换后位于所述矩阵的行号大于预 设阈值, 则创建一个新的索引数组; 其中, 所述新的索引数组的长度小于原来的索引数组的 长度; 0024 将原来的索引数组的内容复制到所述新的索引数组中, 并将所述新的索引数组中 与所述待删除对象互换后位于所述矩阵的行号相同的下标位置指向空。 0025 具体地, 将所述待删除对象和所述矩阵中的最后一个对象互换的步骤之后还包 括: 0026 若所述待删除对象互换后的位置不为所述对象块数组的起始位置, 则删除互换后 的所述待删除对象。 0027 具体地, 还包括: 0028 计算待查找对象的Key值的哈。
17、希值, 根据所述待查找对象的Key值的哈希值定位所 述待查找对象在哈希表的哈希桶中的位置; 0029 遍历访问所述待查找对象在所述哈希表的链表的所述位置, 若所述位置存在所述 待查找对象, 则将所述待查找对象返回。 0030 根据本发明实施例第二方面提供一种GC程序语言中哈希表的实现装置, 包括: 0031 创建模块, 用于在哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最 后位置时, 创建一个新对象块数组, 并将所述新对象块数组插入到所述矩阵的最后一行的 下方; 0032 插入模块, 用于获取所述新对象块数组位于所述矩阵中的行号, 将所述哈希表的 索引数组中与所述行号相同的下标位置指向。
18、所述新对象块数组, 并将所述新对象块数组的 说明书 2/8 页 5 CN 111694559 A 5 起始位置的元素初始化为待插入对象; 0033 若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置, 则将 所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。 0034 根据本发明实施例的第三个方面, 还提供一种电子设备, 包括存储器、 处理器及存 储在存储器上并可在处理器上运行的计算机程序, 所述处理器调用所述程序指令能够执行 第一方面的各种可能的实现方式中任一种可能的实现方式所提供的GC程序语言中哈希表 的实现方法。 0035 根据本发明实施例的第四个方面, 还。
19、提供一种非暂态计算机可读存储介质, 所述 非暂态计算机可读存储介质存储计算机指令, 所述计算机指令使所述计算机执行第一方面 的各种可能的实现方式中任一种可能的实现方式所提供的GC程序语言中哈希表的实现方 法。 0036 本发明实施例提供一种GC程序语言中哈希表的实现方法及装置, 该方法通过在向 哈希表插入对象时, 若哈希表的矩阵中最后一个对象位于矩阵中对象块数组的最后位置, 则创建一个新对象块数组, 将待插入对象插入新对象块数组的起始位置, 通过将对象在哈 希表中以对象块的方式进行存放, 使得哈希表中的内存申请单元为矩阵中的一个数组, 而 非单个对象, 从而将内存申请的频率降低至1/Heigh。
20、t(B), 堆内存中对象的数量降低至1/ Height(B), 哈希表的性能得到显著提升。 附图说明 0037 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图是本发 明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根 据这些附图获得其他的附图。 0038 图1为本发明实施例提供的GC程序语言中哈希表的实现方法整体流程示意图; 0039 图2为本发明实施例提供的GC程序语言中哈希表的实现方法中哈希表的架构示意 图; 0040 图3为本发明实施例提供的GC程序。
21、语言中哈希表的实现装置整体结构示意图; 0041 图4为本发明实施例提供的电子设备整体结构示意图。 具体实施方式 0042 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图是本发 明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根 据这些附图获得其他的附图。 0043 在本发明的一个实施例中提供一种GC程序语言中哈希表的实现方法, 图1为本发 明实施例提供的GC程序语言中哈希表的实现方法整体流程示意图, 该方法包括: S101, 若哈 希表的矩阵中最后一个对。
22、象位于所述矩阵中对象块数组的最后位置, 则创建一个新对象块 数组, 并将所述新对象块数组插入到所述矩阵的最后一行的下方; 0044 本实施例中的哈希表包括三个部分, 即哈希桶H、 多个长度相同的对象块数组构成 说明书 3/8 页 6 CN 111694559 A 6 的矩阵B和一个变长索引数组I, 如图2所示。 其中对象块数组为由多个对象构成的对象块形 成的数组。 哈希表初始化时, 由调用者传入H的长度LH、 变长索引数组的初始长度Len(I)、 B 中每个数组的长度, 即B的高度Height(B)。 初始时B中的数组个数Len(B)1, B0数组的长 度等于Height(B)。 B中存储的对。
23、象以对象块的方式紧挨存放, 每个对象块的长度为Height (B), 通常Height(B)可取值为16,256之间的整数。 初始时变长索引数组的第0个位置I0 指向B0。 0045 向哈希表中插入一个待插入对象时, 获取B中的最后一个元素Bi j。 若Bij中jHeight(B)-1, 那么创建一个新的长度为Height(B)的对象块数组Bi+ 1。 0046 S102, 获取所述新对象块数组位于所述矩阵中的行号, 将所述哈希表的索引数组 中与所述行号相同的下标位置指向所述新对象块数组, 并将所述新对象块数组的起始位置 的元素初始化为待插入对象; 0047 将Ii+1指向Bi+1, 并将Bi。
24、+10初始化为待插入对象中的 object。 0048 S103, 若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位 置, 则将所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。 0049 若Bij中jHeight(B)-1, 则直接将Bij+1初始化为该object。 0050 本实施例通过在向哈希表插入对象时, 若哈希表的矩阵中最后一个对象位于矩阵 中对象块数组的最后位置, 则创建一个新对象块数组, 将待插入对象插入新对象块数组的 起始位置, 通过将对象在哈希表中以对象块的方式进行存放, 使得哈希表中的内存申请单 元为矩阵中的一个数组, 而非单个对象, 从而将。
25、内存申请的频率降低至1/Height(B), 堆内 存中对象的数量降低至1/Height(B), 哈希表的性能得到显著提升。 0051 在上述实施例的基础上, 本实施例中若哈希表的矩阵中最后一个对象位于所述矩 阵中对象块数组的最后位置, 则创建一个新对象块数组的步骤之前还包括: 计算所述待插 入对象的Key值的哈希值, 根据所述哈希值定位所述待插入对象在哈希表的哈希桶中的位 置; 遍历访问所述哈希表的链表的所述位置, 若所述位置不存在所述待插入对象, 则判断所 述哈希表的矩阵中的最后一个对象是否位于所述对象块数组的最后位置。 0052 具体地, 为了避免待插入对象的重复插入, 在将待插入对象插。
26、入哈希表之前, 先判 断待插入对象是否在哈希表中已经存在, 若不存在才对其进行插入。 0053 计算待插入对象的Key值的哈希值Hash(key), 并定位其在H数组中的下标h。 遍历 访问Hh对应的链表, 若找到待插入对象则返回, 否则将待插入对象插入哈希表。 0054 在上述实施例的基础上, 本实施例中将所述哈希表的索引数组中与所述行号相同 的下标位置指向所述新对象块数组的步骤还包括: 若所述索引数组的长度小于或等于所述 新对象块数组位于所述矩阵中的行号, 则创建一个新的索引数组; 其中, 所述新的索引数组 的长度大于原来的索引数组的长度; 将原来的索引数组的内容复制到所述新的索引数组 中。
27、, 并将所述新的索引数组中与所述行号相同的下标位置指向所述新对象块数组。 0055 具体地, 若I的长度小于或等于i+1, 则生成一个比I长的新索引数组, 如新I的长度 为原来I的长度的两倍, 并将原来I中的内容复制到新I中。 将新I中的Ii+1指向Bi+1, 将 Bi+10初始化为待插入对象的object。 说明书 4/8 页 7 CN 111694559 A 7 0056 在上述各实施例的基础上, 本实施例中还包括: 计算待删除对象的Key值的哈希 值, 根据所述待删除对象的Key值的哈希值定位所述待删除对象在哈希表的哈希桶中的位 置; 遍历访问所述待删除对象在所述哈希表的链表的所述位置,。
28、 若所述位置存在所述待删 除对象, 则将所述待删除对象和所述矩阵中的最后一个对象互换; 若所述待删除对象互换 后的位置为所述对象块数组的起始位置, 则销毁所述待删除对象互换后所在的对象块数 组。 0057 具体地, 从哈希表中删除一个待删除对象时, 计算key的哈希值Hash (key), 并定位其在H数组中的下标h。 遍历访问Hh对应的链表, 若没找到待删除对象则返 回空; 若找到待删除对象, 且待删除对象在B中的位置为Bij, 则将它和B矩阵中的最后 一个元素Bi2j2互换。 若j20, 则销毁Bi2整个数组。 若j20, 则仅删除互换后的待删除 对象。 0058 本实施例通过将对象在哈希。
29、表中以对象块的方式进行存放, 使得哈希表中的内存 释放单元为矩阵中的一个数组, 而非单个对象, 从而将内存释放的频率降低至1/Height (B), 堆内存中对象的数量降低至1/Height(B), 哈希表的性能得到显著提升。 0059 在上述实施例的基础上, 本实施例中销毁所述待删除对象互换后所在的对象块数 组的步骤之后还包括: 若所述索引数组的长度减去所述待删除对象互换后位于所述矩阵的 行号大于预设阈值, 则创建一个新的索引数组; 其中, 所述新的索引数组的长度小于原来的 索引数组的长度; 将原来的索引数组的内容复制到所述新的索引数组中, 并将所述新的索 引数组中与所述待删除对象互换后位于。
30、所述矩阵的行号相同的下标位置指向空。 0060 具体地, 若i2远小于I数组的长度, 如i2小于I数组长度的1/4, 则生成一个比I短的 新数组, 如为原来I数组长度的1/2, 并将原来I中的内容复制到新的I数组中, 并将Ii2指 向空。 0061 在上述各实施例的基础上, 本实施例中还包括: 计算待查找对象的Key值的哈希 值, 根据所述待查找对象的Key值的哈希值定位所述待查找对象在哈希表的哈希桶中的位 置; 遍历访问所述待查找对象在所述哈希表的链表的所述位置, 若所述位置存在所述待查 找对象, 则将所述待查找对象返回。 0062 具体地, 从哈希表中查询一个待查询对象时, 计算待查找对象。
31、的Key 值的哈希值Hash(key), 并定位其在H数组中的下标h。 遍历访问Hh对应的链表, 若找到待 查询对象则返回。 0063 在本发明的另一个实施例中提供一种GC程序语言中哈希表的实现装置, 该装置用 于实现前述各实施例中的方法。 因此, 在前述GC程序语言中哈希表的实现方法的各实施例 中的描述和定义, 可以用于本发明实施例中各个执行模块的理解。 图3为本发明实施例提供 的GC程序语言中哈希表的实现装置整体结构示意图, 该装置包括创建模块301和插入模块 302; 其中: 0064 创建模块, 用于在哈希表的矩阵中最后一个对象位于所述矩阵中对象块数组的最 后位置时, 创建一个新对象块。
32、数组, 并将所述新对象块数组插入到所述矩阵的最后一行的 下方; 0065 插入模块, 用于获取所述新对象块数组位于所述矩阵中的行号, 将所述哈希表的 索引数组中与所述行号相同的下标位置指向所述新对象块数组, 并将所述新对象块数组的 说明书 5/8 页 8 CN 111694559 A 8 起始位置的元素初始化为待插入对象; 0066 若所述哈希表的矩阵中的最后一个对象不位于所述对象块数组的最后位置, 则将 所述最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。 0067 本实施例通过在向哈希表插入对象时, 若哈希表的矩阵中最后一个对象位于矩阵 中对象块数组的最后位置, 则创建一个新。
33、对象块数组, 将待插入对象插入新对象块数组的 起始位置, 通过将对象在哈希表中以对象块的方式进行存放, 使得哈希表中的内存申请单 元为矩阵中的一个数组, 而非单个对象, 从而将内存申请的频率降低至1/Height(B), 堆内 存中对象的数量降低至1/Height(B), 哈希表的性能得到显著提升。 0068 在上述实施例的基础上, 本实施例中还包括判断模块, 用于计算所述待插入对象 的Key值的哈希值, 根据所述哈希值定位所述待插入对象在哈希表的哈希桶中的位置; 遍历 访问所述哈希表的链表的所述位置, 若所述位置不存在所述待插入对象, 则判断所述哈希 表的矩阵中的最后一个对象是否位于所述对象。
34、块数组的最后位置。 0069 在上述实施例的基础上, 本实施例中插入模块还用于: 若所述索引数组的长度小 于或等于所述新对象块数组位于所述矩阵中的行号, 则创建一个新的索引数组; 其中, 所述 新的索引数组的长度大于原来的索引数组的长度; 将原来的索引数组的内容复制到所述新 的索引数组中, 并将所述新的索引数组中与所述行号相同的下标位置指向所述新对象块数 组。 0070 在上述实施例的基础上, 本实施例中还包括删除模块, 用于计算待删除对象的Key 值的哈希值, 根据所述待删除对象的Key值的哈希值定位所述待删除对象在哈希表的哈希 桶中的位置; 遍历访问所述待删除对象在所述哈希表的链表的所述位。
35、置, 若所述位置存在 所述待删除对象, 则将所述待删除对象和所述矩阵中的最后一个对象互换; 若所述待删除 对象互换后的位置为所述对象块数组的起始位置, 则销毁所述待删除对象互换后所在的对 象块数组。 0071 在上述实施例的基础上, 本实施例中删除模块还用于: 若所述索引数组的长度减 去所述待删除对象互换后位于所述矩阵的行号大于预设阈值, 则创建一个新的索引数组; 其中, 所述新的索引数组的长度小于原来的索引数组的长度; 将原来的索引数组的内容复 制到所述新的索引数组中, 并将所述新的索引数组中与所述待删除对象互换后位于所述矩 阵的行号相同的下标位置指向空。 0072 在上述实施例的基础上, 。
36、本实施例中删除模块还用于: 若所述待删除对象互换后 的位置不为所述对象块数组的起始位置, 则删除互换后的所述待删除对象。 0073 在上述实施例的基础上, 本实施例中还包括查找模块, 用于计算待查找对象的Key 值的哈希值, 根据所述待查找对象的Key值的哈希值定位所述待查找对象在哈希表的哈希 桶中的位置; 遍历访问所述待查找对象在所述哈希表的链表的所述位置, 若所述位置存在 所述待查找对象, 则将所述待查找对象返回。 0074 图4示例了一种电子设备的实体结构示意图, 如图4所示, 该电子设备可以包括: 处 理器(processor)401、 通信接口(Communications Inte。
37、rface)402、 存储器(memory)403和 通信总线通过通信总线完成相互间的通 信。 处理器401可以调用存储器403中的逻辑指令, 以执行如下方法: 若哈希表的矩阵中最后 一个对象位于矩阵中对象块数组的最后位置, 则创建一个新对象块数组, 并将新对象块数 说明书 6/8 页 9 CN 111694559 A 9 组插入到所述矩阵的最后一行的下方; 获取新对象块数组位于矩阵中的行号, 将哈希表的 索引数组中与行号相同的下标位置指向新对象块数组, 并将新对象块数组的起始位置的元 素初始化为待插入对象; 若哈希表的矩阵。
38、中的最后一个对象不位于对象块数组的最后位 置, 则将最后一个对象所在位置的后一个位置的元素初始化为所述待插入对象。 0075 此外, 上述的存储器403中的逻辑指令可以通过软件功能单元的形式实现并作为 独立的产品销售或使用时, 可以存储在一个计算机可读取存储介质中。 基于这样的理解, 本 发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以 软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质中, 包括若干指令用以 使得一台计算机设备(可以是个人计算机, 服务器, 或者网络设备等)执行本发明各个实施 例所述方法的全部或部分步骤。 而前述的存储介质包括: U盘、 。
39、移动硬盘、 只读存储器(ROM, Read-Only Memory)、 随机存取存储器(RAM, Random Access Memory)、 磁碟或者光盘等各种 可以存储程序代码的介质。 0076 本实施例提供一种非暂态计算机可读存储介质, 非暂态计算机可读存储介质存储 计算机指令, 计算机指令使计算机执行上述各方法实施例所提供的方法, 例如包括: 若哈希 表的矩阵中最后一个对象位于矩阵中对象块数组的最后位置, 则创建一个新对象块数组, 并将新对象块数组插入到所述矩阵的最后一行的下方; 获取新对象块数组位于矩阵中的行 号, 将哈希表的索引数组中与行号相同的下标位置指向新对象块数组, 并将新对。
40、象块数组 的起始位置的元素初始化为待插入对象; 若哈希表的矩阵中的最后一个对象不位于对象块 数组的最后位置, 则将最后一个对象所在位置的后一个位置的元素初始化为所述待插入对 象。 0077 本领域普通技术人员可以理解: 实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成, 前述的程序可以存储于一计算机可读取存储介质中, 该程序 在执行时, 执行包括上述方法实施例的步骤; 而前述的存储介质包括: ROM、 RAM、 磁碟或者光 盘等各种可以存储程序代码的介质。 0078 以上所描述的装置实施例仅仅是示意性的, 其中所述作为分离部件说明的单元可 以是或者也可以不是物理上分开的, 。
41、作为单元显示的部件可以是或者也可以不是物理单 元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。 可以根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。 本领域普通技术人员在不付出创造性 的劳动的情况下, 即可以理解并实施。 0079 通过以上的实施方式的描述, 本领域的技术人员可以清楚地了解到各实施方式可 借助软件加必需的通用硬件平台的方式来实现, 当然也可以通过硬件。 基于这样的理解, 上 述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来, 该 计算机软件产品可以存储在计算机可读存储介质中, 如ROM/RAM、 磁碟、 光盘等, 包括若。
42、干指 令用以使得一台计算机设备(可以是个人计算机, 服务器, 或者网络设备等)执行各个实施 例或者实施例的某些部分所述的方法。 0080 最后应说明的是: 以上实施例仅用以说明本发明的技术方案, 而非对其限制; 尽管 参照前述实施例对本发明进行了详细的说明, 本领域的普通技术人员应当理解: 其依然可 以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征进行等同替换; 而这些修改或者替换, 并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和 说明书 7/8 页 10 CN 111694559 A 10 范围。 说明书 8/8 页 11 CN 111694559 A 11 图1 图2 说明书附图 1/2 页 12 CN 111694559 A 12 图3 图4 说明书附图 2/2 页 13 CN 111694559 A 13 。