zoukankan      html  css  js  c++  java
  • php 核心数据结构 Hash table

    HashTable是Zend的核心数据结构,在PHP里面几乎并用来实现所有常见功能,我们知道的PHP数组即是其典型应用,此外,在zend内部,如函数符号表、全局变量等也都是基于hash table,它具有如下特点

    1. 支持典型的key->value查询
    2. 可以当做数组使用
    3. 添加、删除节点是O(1)复杂度
    4. key支持混合类型:同时存在关联数组合索引数组
    5. Value支持混合类型:array("string",2332)
    6. 支持线性遍历:如foreach

    Zend hash table实现了典型的hash表散列结构,同时通过附加一个双向链表,提供了正向、反向遍历数组的功能。
    其结构如下图

    散列结构:Zend的散列结构是典型的hash表模型,通过链表的方式来解决冲突。需要注意的是zend的hash table是一个自增长的数据结构,当hash表数目满了之后,其本身会动态以2倍的方式扩容并重新定位元素位置。初始大小均为8。另外,在进行 key->value快速查找时候,zend本身还做了一些优化,通过空间换时间的方式加快速度。比如在每个元素中都会用一个变量 nKeyLength标识key的长度以作快速判定;

    双向链表:Zend hash table通过一个链表结构,实现了元素的线性遍历。理论上,做遍历使用单向链表就够了,之所以使用双向链表,主要目的是为了快速删除,避免遍历。 Zend hash table是一种复合型的结构,作为数组使用时,即支持常见的关联数组也能够作为顺序索引数字来使用,甚至允许2者的混合;

    你总想等你优秀了再去向她表白,后来才发现人家只是单纯的不喜欢你

  • 相关阅读:
    演义江湖PC端意见汇总
    演义江湖移动端内存优化意见汇总
    BitmapData类介绍
    我的职业规划_2013-7-29
    总结调用Flash的几种方法
    Pycharm注册
    删除表
    读取url中某个值
    Pycharm常用快捷键
    pip3使用
  • 原文地址:https://www.cnblogs.com/fangdada/p/14979920.html
Copyright © 2011-2022 走看看