单机hash算法 vs 多阶hash算法

单阶hash和多阶hash实现:
在这里插入图片描述
单阶算法 vs 多阶算法优缺点:
1.单阶算法的典型实现是HashMap结构,他可以动态扩容,由于他除了hash冲突时使用的是红黑树,所以最坏情况下查找和插入元素时间复杂度是O(logN),缺点是非数组实现,不容易序列化到磁盘上
2.多阶算法的缺点是容量是初始化是就固定的,每一阶的元素数量在初始化是就已经确定,原则上是比上一阶质数小的最大质数,以六阶为例:97,89,83,79,73,71 , 多阶数组的另一个缺点是可能存在找不到空闲坑位的情况,比如每一阶都冲突,导致没有坑位可放置元素,这种情况非常罕见,不过一旦出现,只能对外报错,由调用方进行处理,所以使用多阶数组时需要监控数组坑位的使用情况,如果发现使用了超过70%要提前扩容,多阶数组可以通过一个一维的数组,比如0-N存放第一阶元素,N+1 - N+M存放第二阶元素,N+M+1 - N+M+S存放第三阶元素的形式来实现,这样的数组结构非常容易序列化到磁盘中,而且非常容易从磁盘反序列化回来

总结:多阶数组最大的问题在于可能会存放不下元素,所以实际中我们可以结合两个算法的优点实现一个整体的对外结构:先把元素存放到多阶数组中,如果多阶数组放不下,再把这个元素放在单阶算法的HashMap中,单阶HashMap起到一个兜底的作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值