面试知识梳理--php hashtable

2021-10-29  本文已影响0人  展翅鹏飛

仔细回顾一下php的底层数据结构hash table,可以说是PHP语言层面的核心之一;

所谓的hash在php内使用的是time33算法,DJBX33A (Daniel J. Bernstein, Times 33 with Addition);

放两个time33算法的文章后续再仔细研究吧(https://www.laruence.com/2009/07/23/994.html,https://www.jianshu.com/p/433d93015467)据说对于字符串的hash运算计算更快,hash结果更平均;

散列表内部会保存头尾两个元素,保证线性遍历,以及保存头尾节点信息;

hashtable一定会有hash指冲突的情况,最简单的是将冲突的值也保存一个了链表,碰到hash冲突的元素,将老的节点移动到新的位置,然后新插入的元素链到后面;

数组的查找过程:1、先根据数据的key计算hash code,然后拿到数组的顺序idx,然后能拿到对应的bucket,然后遍历bucket,判断key相同的的即为数组的值;

上一篇 下一篇

猜你喜欢

热点阅读