数组的底层实现

数组的低层实现是hash表,php里的数组是有序的,会按照插入的顺序输出。

为了保证元素有序,低层保存了中间映射表。

使用hash表都会有hash冲突的风险,解决冲突的方式是使用链地址法。

redis以及mysql、mongodb中都有使用hash表。

hash表在不同的语言中有不同的称呼:散列表、字典、dictionary。

扩展:

数组的低层是哈希表——哈希表是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。

散列存储的基本思路:以数据中每个元素的关键字K为自变量,通过散列函数H(k)计算出函数值,以该函数值作为一块连续存储空间的的单元地址,将该元素存储到函数值对应的单元中。