仔细回顾一下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相同的的即为数组的值;
网友评论