搜索
当前位置: 秒秒彩官网 > 读入字节集 >

JimStone(谢栋) - STHashMap哈希表13[重要更新] - 核心库纯算法

gecimao 发表于 2019-05-27 16:36 | 查看: | 回复:

   本帖被 iouioupp 设置为精华(2016-12-24)

  使用核心库纯算法实现的哈希表,原理模拟的JDK中的哈希表。外层取模运算内层在数量大于6条数据之后建立红黑树。之后的数据结果则使用红黑树进行检索。由于易语言无法实现链表,所以红黑树和内层节点存储均使用数组模拟,数据删除的方法会清理数据内容并不会做实际节点的删除。

  哈希表和哈希同步表对象分别为普通哈希表 和 多线程同步哈希表的自代理中文命名的访问类,原始类为 STHashMap和STSyncHashMap,英文好的童鞋建议使用英文命名的原始对象,普通童鞋直接使用 哈希表 和 哈希同步表 这两个名字的对象即可。

  JimStone(谢栋) - STHashMap哈希表1.3.rar(69 K) :731

  修复了取主键哈希值的重大BUG,由于使用长整数计算哈希溢出后数值为易语言的长整数溢出值,主键长度一旦达到一定长度后计算的哈希结果都为溢出值,从而造成严重的碰撞,当前版本已经通过整数自然溢出解决了哈希运算结果由于长度产生碰撞的问题。

  加入了哈希有序表。哈希有序表 取所有主键() 支持获取带排序的主键数组。

  JimStone(谢栋) - STHashMap哈希表1.2.rar(55 K) :30

  JimStone(谢栋) - STHashMap哈希表1.1.rar(56 K) :24

  JimStone(谢栋) - STHashMap哈希表.rar(53 K) :132

  以下本文中所有方法名称后“-”的右边为原始英文命令的名称。英文名称在STHashMap、STSyncHashMap、STValue和STStream中可直接使用。

  引用哈希表为原始对象的中文命名自代理对象,STHashMap为原始哈希表对象。喜欢中文的朋友们可以直接使用“哈希表”对象,作用等同于 STHashMap,由于是代理方式访问,所以效率比原始对象可能稍微慢一点点,大部分场景下损耗的效率可以忽略不计。

  初始化当前对象。不调用则使用默认。引用节点取模数: 顶层节点数越高则占用空间越大,效率越高。默认:1024

  从当前对象删除指定值。由于易语言不支持链表结构,为了效率这里将直接清空值内容并且标记对应节点为已删除状态,不做实际的节点删除操作。引用键: 主键文本名称。

  获取当前对象的所有主键名。返回主键数量,主键内容将被写入到参数中。引用主键数组_: 存储主键名称使用的数据。

  从流读入。失败返回-1,成功返回记录数。(非线程安全)。引用流: 要读入的流对象。

  将当前哈希表内容写出到文件。失败返回假。引用文件路径: 写出到的文件路径。

  从文件读入。失败返回-1,成功返回记录数。(非线程安全)引用文件路径: 要读入的文件路径。

  引用哈希同步表对象内部建立了多线程访问机制。在多线程中调用哈希表请使用此对象。

  哈希同步表为原始对象的中文命名自代理对象,STSyncHashMap为原始同步哈希表对象。

  方法请直接参考“哈希表”对象的方法说明,哈希同步表初始化默认取模数为2048。

  引用哈希有序表为有序的哈希表,内部维持着插入顺序产生的主键列表。哈希有序表为全代理类型的对象,需要通过 置基础哈希表对象 开头的指令设置内部代理的实际哈希表对象。方法请直接参考“哈希表”对象的方法说明,除基础方法外本类扩展的方法有以下几个。

  设置内部代理原始哈希表对象引用哈希表对象: 要代理的哈希表对象。建议最好是空对象。

  引用值对象主要用于在哈希表等场景下存储使用。内部定义了基础数据类型的直接读写的方法,复合对象可直接转换为流对象(STStream)进行读写操作。

本文链接:http://k-mood.com/duruzijieji/390.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部