测一下Hashtable的排序规则

表面上是无规律的,实际上还是有规律的。

 

 

结果如下:

============Hashtable Test=================
Hk(key):0004,Key:4
Hk(key):0005,Key:5
Hk(key):0006,Key:6
Hk(key):0001,Key:1
Hk(key):0003,Key:3
add all
============Hashtable Test=================
Hk(key):0004,Key:4
Hk(key):0005,Key:5
Hk(key):0006,Key:6
Hk(key):0001,Key:1
Hk(key):0003,Key:3
hashC.Remove('0');
============Hashtable Test=================
Hk(key):0004,Key:4
Hk(key):0005,Key:5
Hk(key):0006,Key:6
Hk(key):0001,Key:1
Hk(key):0003,Key:3
hashC.Remove('0');
============Hashtable Test=================
Hk(key):0005,Key:5
Hk(key):0006,Key:6
Hk(key):0001,Key:1
Hk(key):0003,Key:3
hashC.Remove('4');
============Hashtable Test=================
Hk(key):0005,Key:5
Hk(key):0006,Key:6
Hk(key):0001,Key:1
Hk(key):0003,Key:3
hashC.Remove('4');
============Hashtable Test=================
Hk(key):0005,Key:5
Hk(key):0006,Key:6
Hk(key):0001,Key:1
Hk(key):0002,Key:2
Hk(key):0003,Key:3
hashC.Add('2');

[1]测试了键值hashcode无冲突情况
[2]容量指定为第一个给定素数=7
[3]内部停留指针所在的位置:最后操作的位置向下移动一格
[4]Foreach时,从HeadPos开始,按顺序输出,容器可以看作一个环形队列
[5]字符的hashcode与Hk(key)完全一样

 

Hashcode分配规律:
[1]默认值的情况
3(素数表中的第一个情况)

 

[2]给定初始值的情况
如果给定初始值,它会在素数表中找比设置大小大的数的最小值。

 

[3]自然增长的情况
首个3,再表中取比这个数的两倍大的最小值,依次类推。

3 -> 7 -> 17 -> 37 -> 89 -> 197 -> 431 -> 919 -> 1931 -> 4049 -> 8419 -> 17519 -> 36353 -> 75431 -> ...

 

[4]给定初始值自然增长情况
参照[3],区别在于首字符的设定

[5]素数间隔
从23开始,后一个素数/前一个素数,约等于1.2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值